【发布时间】:2012-04-28 15:48:28
【问题描述】:
是否有任何现有机制让 GtkEntry 在获得焦点时将光标简单地定位在文本的末尾,而不是选择其内容被下一个键覆盖?必须添加一个信号处理程序来做这个基本的事情似乎很奇怪,但我在属性中找不到任何东西。
编辑:信号处理程序不起作用;无论我做什么,默认行为都会在我的处理程序运行后触发。这是我的 gtkd 代码;请注意,我在焦点事件处理程序中附加了一些文本,并且附加的文本也被选中:
class NoteView : Entry
{
this(string text) {
if (text) {
setText(text);
}
setEditable(true);
setCanFocus(true);
addOnFocusIn(delegate bool(GdkEventFocus* f, Widget w) {
// clear selection
selectRegion(0, 0);
// test to see whether the appended text gets selected too
appendText("hello");
setPosition(-1);
// don't let any other handlers run
return 1;
}, ConnectFlags.AFTER);
}
}
addOnFocusIn 方法在 gtkd Gtk.Widget api 中;它在内部调用g_signal_connect_data,理论上它应该尊重G_CONNECT_AFTER标志我正在传递它,但似乎没有。
Edit2:已解决 - grab-focus 处理程序正在执行文本选择,并在 focus-in-event 之后处理
【问题讨论】: