Set_editable () из Clutter.Text не работает - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь создать редактируемое многострочное текстовое поле, используя Clutter.Text 's set_editable() метод:

let label = new St.Label({ text: 'My dummy example.' });
label.clutter_text.set_editable(true);
label.clutter_text.set_activatable(true);

Но это не похожеработать.Что мне не хватает?Вот упрощенный extension.js, который использует код выше:

const St = imports.gi.St;
const Main = imports.ui.main;
const Pango = imports.gi.Pango;
const PanelMenu = imports.ui.panelMenu;

let btn;

function DummyApp() {
    this._init();
}

DummyApp.prototype = {
    __proto__: PanelMenu.Button.prototype,
    _init: function() {
        PanelMenu.Button.prototype._init.call(this, St.Align.START);

        let button = new St.Bin();
        let icon = new St.Icon({
            icon_name: 'system-run-symbolic',
            style_class: 'system-status-icon' });

        button.set_child(icon);

        this.actor.add_actor(button);

        let mainBox = new St.BoxLayout();
        let label = new St.Label({ text: 'My dummy example.' });
        label.clutter_text.set_editable(true);
        label.clutter_text.set_activatable(true);

        mainBox.add_child(label);
        this.menu.box.add(mainBox);
    },
}

function init() {}

function enable() {
    btn = new DummyApp();
    Main.panel.addToStatusArea('dummyapp_sec', btn);
}

function disable() {
    Main.panel._rightBox.remove_child(btn);
}

В качестве сноски Gtk.TextView выглядит как раз то, что мне нужно, но я не смог понять, как интегрировать его вВсплывающее меню.Есть идеи?

1 Ответ

0 голосов
/ 13 июня 2018

Актеры в Clutter не реагируют на события по умолчанию;вам нужно явно установить актера как реактивный , чтобы он мог получать события.

Кроме того, вы не можете использовать виджеты GTK в расширениях оболочки GNOME: GTK - это клиентский инструментарий, и вы 'переписываем расширение для композитора и сервера отображения.

...