次のキーで上書きする内容を選択するのではなく、フォーカスされたときにGtkEntryがテキストの最後にカーソルを置くだけの既存のメカニズムはありますか?この基本的なことを行うためにシグナルハンドラーを追加する必要があるのは奇妙に思えますが、プロパティに何も見つかりません。
編集:シグナルハンドラーは機能しません。私が行うことは何でも、ハンドラーの実行後にデフォルトの動作がトリガーされます。これが私のgtkdコードです。focus-in-eventハンドラーにテキストを追加していることに注意してください。追加されたテキストも選択されます。
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
gtkdGtk.Widgetapiにあります。それはg_signal_connect_data
内部的に呼び出します、それは理論的にG_CONNECT_AFTER
は私がそれを渡すフラグを尊重するはずですが、そうではないようです。
Edit2:解決済み-grab-focus
ハンドラーはテキスト選択を行っていて、その後処理されていましたfocus-in-event