forked from AuroraMiddleware/gtk
Fix interaction between scrolling menus and automatic mnemonics
https://bugzilla.gnome.org/show_bug.cgi?id=612611
This commit is contained in:
parent
ca6398a649
commit
71d6a289fc
@ -238,7 +238,8 @@ static void gtk_menu_set_submenu_navigation_region (GtkMenu *menu,
|
|||||||
|
|
||||||
static void gtk_menu_deactivate (GtkMenuShell *menu_shell);
|
static void gtk_menu_deactivate (GtkMenuShell *menu_shell);
|
||||||
static void gtk_menu_show_all (GtkWidget *widget);
|
static void gtk_menu_show_all (GtkWidget *widget);
|
||||||
static void gtk_menu_position (GtkMenu *menu);
|
static void gtk_menu_position (GtkMenu *menu,
|
||||||
|
gboolean set_scroll_offset);
|
||||||
static void gtk_menu_reparent (GtkMenu *menu,
|
static void gtk_menu_reparent (GtkMenu *menu,
|
||||||
GtkWidget *new_parent,
|
GtkWidget *new_parent,
|
||||||
gboolean unrealize);
|
gboolean unrealize);
|
||||||
@ -1131,7 +1132,7 @@ menu_change_screen (GtkMenu *menu,
|
|||||||
if (menu->torn_off)
|
if (menu->torn_off)
|
||||||
{
|
{
|
||||||
gtk_window_set_screen (GTK_WINDOW (menu->tearoff_window), new_screen);
|
gtk_window_set_screen (GTK_WINDOW (menu->tearoff_window), new_screen);
|
||||||
gtk_menu_position (menu);
|
gtk_menu_position (menu, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_window_set_screen (GTK_WINDOW (menu->toplevel), new_screen);
|
gtk_window_set_screen (GTK_WINDOW (menu->toplevel), new_screen);
|
||||||
@ -1618,7 +1619,7 @@ gtk_menu_popup_for_device (GtkMenu *menu,
|
|||||||
|
|
||||||
/* Position the menu, possibly changing the size request
|
/* Position the menu, possibly changing the size request
|
||||||
*/
|
*/
|
||||||
gtk_menu_position (menu);
|
gtk_menu_position (menu, TRUE);
|
||||||
|
|
||||||
/* Compute the size of the toplevel and realize it so we
|
/* Compute the size of the toplevel and realize it so we
|
||||||
* can scroll correctly.
|
* can scroll correctly.
|
||||||
@ -2011,7 +2012,7 @@ gtk_menu_reposition (GtkMenu *menu)
|
|||||||
g_return_if_fail (GTK_IS_MENU (menu));
|
g_return_if_fail (GTK_IS_MENU (menu));
|
||||||
|
|
||||||
if (!menu->torn_off && gtk_widget_is_drawable (GTK_WIDGET (menu)))
|
if (!menu->torn_off && gtk_widget_is_drawable (GTK_WIDGET (menu)))
|
||||||
gtk_menu_position (menu);
|
gtk_menu_position (menu, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2193,7 +2194,7 @@ gtk_menu_set_tearoff_state (GtkMenu *menu,
|
|||||||
gtk_menu_set_tearoff_hints (menu, gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (menu))));
|
gtk_menu_set_tearoff_hints (menu, gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (menu))));
|
||||||
|
|
||||||
gtk_widget_realize (menu->tearoff_window);
|
gtk_widget_realize (menu->tearoff_window);
|
||||||
gtk_menu_position (menu);
|
gtk_menu_position (menu, TRUE);
|
||||||
|
|
||||||
gtk_widget_show (GTK_WIDGET (menu));
|
gtk_widget_show (GTK_WIDGET (menu));
|
||||||
gtk_widget_show (menu->tearoff_window);
|
gtk_widget_show (menu->tearoff_window);
|
||||||
@ -4472,7 +4473,8 @@ gtk_menu_deactivate (GtkMenuShell *menu_shell)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_menu_position (GtkMenu *menu)
|
gtk_menu_position (GtkMenu *menu,
|
||||||
|
gboolean set_scroll_offset)
|
||||||
{
|
{
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
GtkRequisition requisition;
|
GtkRequisition requisition;
|
||||||
@ -4704,6 +4706,7 @@ gtk_menu_position (GtkMenu *menu)
|
|||||||
requisition.width, requisition.height);
|
requisition.width, requisition.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (set_scroll_offset)
|
||||||
menu->scroll_offset = scroll_offset;
|
menu->scroll_offset = scroll_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user