Има ли съществуващ механизъм за 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