summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMichael Natterer <mitch@imendio.com>2007-11-06 14:23:56 +0000
committerMichael Natterer <mitch@src.gnome.org>2007-11-06 14:23:56 +0000
commit9b3edbc319afccf221ad0ce75061e6c364572964 (patch)
treecec4d6b95e3a348dd1cc9569a53ba47bf76db666 /gtk
parentf93e2db2a941698c8b681f0fa2da42e09d2bd883 (diff)
downloadgdk-pixbuf-9b3edbc319afccf221ad0ce75061e6c364572964.tar.gz
call gdk_flush() after showing the menu so we can definitely grab on it.
2007-11-06 Michael Natterer <mitch@imendio.com> * gtk/gtkmenu.c (gtk_menu_popup): call gdk_flush() after showing the menu so we can definitely grab on it. Grab failure found by Xan Lopez. svn path=/trunk/; revision=18969
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkmenu.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index deb3a46c5..354ab2187 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -1449,6 +1449,13 @@ gtk_menu_popup (GtkMenu *menu,
*/
gtk_widget_show (menu->toplevel);
+ /* flush the X event queue for the popup to become realized and
+ * mapped, since grabbing requires a mapped window. (this only works
+ * for popups, regular windows need gtk_widget_show_now() to sync
+ * with window manager interaction).
+ */
+ gdk_flush ();
+
if (xgrab_shell == widget)
popup_grab_on_window (widget->window, activate_time, grab_keyboard); /* Should always succeed */
gtk_grab_add (GTK_WIDGET (menu));