GTK + версия: 3.18.9
Я создал область рисования (GtkWidget) со следующим кодом
content = gtk_drawing_area_new();
gtk_widget_set_can_focus(content, TRUE);
gtk_widget_add_events(content, GDK_ALL_EVENTS_MASK);
g_signal_connect(content, "draw", G_CALLBACK(&drawCallback), ctx);
gtk_widget_realize(content);
// Add a filter for interception
gdk_window_add_filter(content, gtk_widget_get_window(content),
OnXEvent, NULL);
Проблема в том, что когда я щелкнул по широкому значению, я получил последовательность событий XEvents следующим образом:
LeaveNotify
FocusIn
EnterNotify
ButtonPress
FocusOut // Lost focus!
ButtonRelease
Выше FocusOut означает, что мы сразу же потеряли фокус после нажатия.
Это означает, что мы не можем получать какие-либо события клавиатуры, поскольку они доступны только внутри фокуса.
Это ограничение GTK? Если нет, есть ли какие-нибудь инструменты / методология, чтобы узнать, какой виджет / вдова вызывает FocusOut?
Ссылки:
gdk_window_add_filter