gtk2/gdk/wayland
Jasper St. Pierre 75ecdf50a3 wayland: Fix GtkMenuButton popups in a terrible, hacky way
Since you can't take grabs on unmapped windows, GtkMenu takes a grab on
the menu in a convoluted way: it first grabs another window, shows the
menu window, and then transfers the grab over to the GtkMenu widget.

For normal menubars, this is perfectly fine, as the first window it grabs
is our toplevel, and that gets picked up in our transient path.  For
GtkMenuButton or other spurious uses of gtk_menu_popup, it creates a new
temporary input-only window which it takes the grab on, known as the "grab
transfer window". Since this window isn't a transient-for of our new menu
widget window, the grab isn't noticed when we go to show it, and thus the
menu ends up as a new toplevel.

Add a special hack to GtkMenu and the Wayland backend which lets us notice
this "grab transfer window", and include it in our grab finding path.

It's sort of terrible to have to hack up the widgets instead of just the
backend, but the alternative would be an entirely new window type which is
managed correctly by GDK. I don't want to write that.
2014-05-15 18:02:45 -04:00
..
protocol wayland: Update to latest xdg-shell protocol 2014-05-13 02:39:59 -04:00
gdkapplaunchcontext-wayland.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkcursor-wayland.c wayland: Merge buffer implementations 2014-04-12 08:20:33 -07:00
gdkdevice-wayland.c wayland: Fix c&p typo in touch capabilities handling. 2014-05-06 18:37:57 +02:00
gdkdisplay-wayland.c wayland: Merge buffer implementations 2014-04-12 08:20:33 -07:00
gdkdisplay-wayland.h wayland: Replace wl_shell_surface with xdg_shell 2013-11-18 13:44:20 -05:00
gdkdnd-wayland.c wayland: Don't assert fail in DND 2013-11-19 18:55:26 -05:00
gdkeventsource.c Handle recursion from motion event handlers 2013-11-11 23:17:14 -05:00
gdkkeys-wayland.c wayland: Implement gdk_keymap_get_modifier_state 2013-04-06 21:16:38 -04:00
gdkprivate-wayland.h wayland: Merge buffer implementations 2014-04-12 08:20:33 -07:00
gdkscreen-wayland.c gdkscreen-wayland: Emit monitors-changed when the output scale changes 2014-04-26 17:32:57 +02:00
gdkselection-wayland.c wayland: Remove unhelpful debug message 2012-07-12 15:58:37 +01:00
gdkwayland.h wayland: Remove displaymanager implementation 2013-05-02 16:14:59 +02:00
gdkwaylanddevice.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkwaylanddisplay.h wayland: fix rename of wl_shell to xdg_shell 2014-01-20 14:37:33 -05:00
gdkwaylandselection.h wayland: Fix build due to missing symbol export 2013-07-09 07:09:13 +02:00
gdkwaylandwindow.h wayland: Replace wl_shell_surface with xdg_shell 2013-11-18 13:44:20 -05:00
gdkwindow-wayland.c wayland: Fix GtkMenuButton popups in a terrible, hacky way 2014-05-15 18:02:45 -04:00
Makefile.am Fix make dist 2013-12-17 07:31:41 -05:00