Clutter.Text 的 set_editable() 似乎不起作用
Clutter.Text's set_editable() doesn't seem work
我正在尝试使用 Clutter.Text
的 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 看起来正是我所需要的,但我一直无法弄清楚如何将它集成到 PopupMenu 中。有什么想法吗?
默认情况下,Clutter 中的 Actor 不会对事件做出反应;您需要明确地将 actor 设置为 reactive 才能接收事件。
此外,您不能在 GNOME Shell 扩展中使用 GTK 小部件:GTK 是一个客户端工具包,而您正在为合成器和显示服务器编写扩展。
我正在尝试使用 Clutter.Text
的 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 看起来正是我所需要的,但我一直无法弄清楚如何将它集成到 PopupMenu 中。有什么想法吗?
默认情况下,Clutter 中的 Actor 不会对事件做出反应;您需要明确地将 actor 设置为 reactive 才能接收事件。
此外,您不能在 GNOME Shell 扩展中使用 GTK 小部件:GTK 是一个客户端工具包,而您正在为合成器和显示服务器编写扩展。