diff options
author | Michael Natterer <mitch@imendio.com> | 2007-11-06 14:23:56 +0000 |
---|---|---|
committer | Michael Natterer <mitch@src.gnome.org> | 2007-11-06 14:23:56 +0000 |
commit | 9b3edbc319afccf221ad0ce75061e6c364572964 (patch) | |
tree | cec4d6b95e3a348dd1cc9569a53ba47bf76db666 /gtk/gtkmenu.c | |
parent | f93e2db2a941698c8b681f0fa2da42e09d2bd883 (diff) | |
download | gtk+-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/gtkmenu.c')
-rw-r--r-- | gtk/gtkmenu.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index deb3a46c51..354ab21875 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)); |