GTK3 gtk_window_new in popup style: How to keep the focus event ?

Feb 29, 2020 0 Replies

Hello all,



I've created a popup menu (which works), but have a problem: the popup window doesn't generate "focus-out-event" signals anymore (something which I intend to use to easily dismiss the popup).



I've tried to use standard popup together with setting a mask for that signal to re-enable it :



GtkWidget *popup = gtk_window_new(GTK_WINDOW_POPUP) gtk_widget_add_events(G_OBJECT(popup), GDK_FOCUS_CHANGE_MASK);



but that didn't want to work.



Than I tried a standard toplevel window with some changes applied, but it turned out that removing the taskbar-hint also blocked the focus-change signal :



GtkWidget *popup = gtk_window_new(GTK_WINDOW_TOPLEVEL) gtk_window_set_skip_taskbar_hint (GTK_WINDOW (popup_window), TRUE);



Trying to re-add the focus-change mask didn't help here either.



So, the question: How do I create a popup window (or one that looks like it!), while maintaining the "focus-out-event" signal (or how do I re-enable it again when its disabled).



Also, its my intention to allow for keyboard navigation (to select items in the to-be-added GtkListBox or other). But for some reason keyboard interaction is also disabled for a popup style window (it refuses to accept focus). Although I've been able to use "gdk_keyboard_grab()"* for that, I wonder if it can be done with less force (maybe setting a flag which allows setting focus ?)


*funny thing that by the way: using that throws a warning its depricated and I should use "gdk_device_grab()". However, when I do that I'm than told its depricated too, and I should use "gdk_seat_grab()" (which is way more complex and doesn't seem to be intended to do a simple "allow & set focus" action on a window. :-\ )

Regards, Rudy Wieser


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required