Метод 1 - с использованием GDK (прото не знал, что у GtkWidget тоже есть такая функция)
Код: Выделить всё
GtkWidget * main_win = ..... // Короче, получаю ссылку из gtkbuilder
GdkWindow * grab_win = gtk_widget_get_parent_window( main_win );
GdkGrabStatus status = gdk_pointer_grab( grab_win, false, GTK_BUTTON_MOTION_MASK, NULL, NULL, GDK_CURRENT_TIME);
Теперь о результатах. grab_win после инициализации оказывается равным NULL. Думаю, на этом можно кончить, добавлю только, что gdk_pointer_grab выдает успех (GDK_GRAB_SUCCESS). А указатель так и не захвачен (все также можно переключать фокус по наведению мыши и щелкать кнопки в других приложениях).
Второй спобоб намного проще - с использованием собственной фичи GtkWidget
Код: Выделить всё
GtkWidget * main_win = ..... // то же самое
gtk_widget_grab_focus( main_win );
И это тоже безрезультатно.
А полноценной обучающей статьи, как правильно грабить в gtk2, с примером, я так и не нашел.