Fall back to the default positioning when the menuitem is not realized.

* gtk/gtkmenuitem.c: Fall back to the default positioning when
        the menuitem is not realized. Patch by Björn Lindqvist.



svn path=/trunk/; revision=20754
This commit is contained in:
Matthias Clasen 2008-07-03 23:33:08 +00:00
parent 8f6aa13b05
commit 65f9d54685
2 changed files with 21 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2008-07-03 Matthias Clasen <mclasen@redhat.com>
Bug 540618 gtk_menu_shell_select_first prints warning on GtkMenubar
constructed using GtkUIManager
* gtk/gtkmenuitem.c: Fall back to the default positioning when
the menuitem is not realized. Patch by Björn Lindqvist.
2008-07-03 Matthias Clasen <mclasen@redhat.com>
Bug 540612 mem leak in filechooser

View File

@ -1141,6 +1141,7 @@ gtk_menu_item_real_popup_submenu (GtkWidget *widget,
if (GTK_WIDGET_IS_SENSITIVE (menu_item->submenu))
{
gboolean take_focus;
GtkMenuPositionFunc menu_position_func;
take_focus = gtk_menu_shell_get_take_focus (GTK_MENU_SHELL (widget->parent));
gtk_menu_shell_set_take_focus (GTK_MENU_SHELL (menu_item->submenu),
@ -1162,10 +1163,21 @@ gtk_menu_item_real_popup_submenu (GtkWidget *widget,
"gtk-menu-exact-popup-time", NULL);
}
/* gtk_menu_item_position_menu positions the submenu from the
* menuitems position. If the menuitem doesn't have a window,
* that doesn't work. In that case we use the default
* positioning function instead which places the submenu at the
* mouse cursor.
*/
if (widget->window)
menu_position_func = gtk_menu_item_position_menu;
else
menu_position_func = NULL;
gtk_menu_popup (GTK_MENU (menu_item->submenu),
widget->parent,
widget,
gtk_menu_item_position_menu,
menu_position_func,
menu_item,
GTK_MENU_SHELL (widget->parent)->button,
0);