gtk2 + gtkbuilder: не удается сграбить мышь. (Вроде бы все нормально... почти)

Модератор: Модераторы разделов

nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

gtk2 + gtkbuilder: не удается сграбить мышь.

Сообщение nick87720z »

Пробовал два метода, не один не сработал.
Метод 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, с примером, я так и не нашел.
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: gtk2 + gtkbuilder: не удается сграбить мышь.

Сообщение nick87720z »

Еще немного мучений в гугле, и я нашел gtk_grab_add... это в разделе "Main loops and Events" =)
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: gtk2 + gtkbuilder: не удается сграбить мышь.

Сообщение nick87720z »

Ничего не понимаю.
gtk_grab_add( widget ) вроде проходит - gtk_grab_get_current() выдает тот же "widget". А результата - 0.
Остается только смотреть исходники инструментов для создания скриншотов.
Спасибо сказали: