[gtk+/gtk-2-24] GtkMenuShell: always 'activate' menu shells
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-24] GtkMenuShell: always 'activate' menu shells
- Date: Fri, 17 Mar 2017 02:30:56 +0000 (UTC)
commit e6afe1165e2f1c74f7dbd5e6a6c965f8abcfd275
Author: Colomban Wendling <cwendling hypra fr>
Date: Wed Dec 7 15:49:03 2016 +0100
GtkMenuShell: always 'activate' menu shells
Failing to do so can leave us with a stuck grab in some cases.
https://bugzilla.gnome.org/show_bug.cgi?id=554057
Cherry-picks f5eee56b56e2f371a0dc659f2d402b0cfc1c42c2,
9833fbd77a63ee5dd8f6b5519831db2a4b29ebb9 and
4eac7f24177d947852574f11ef483b1c43fd17e5 from GTK3.
gtk/gtkmenubar.c | 1 -
gtk/gtkmenuitem.c | 2 --
gtk/gtkmenushell.c | 8 +++++---
gtk/gtkmenushell.h | 1 -
4 files changed, 5 insertions(+), 7 deletions(-)
---
diff --git a/gtk/gtkmenubar.c b/gtk/gtkmenubar.c
index 05de45c..e3b9554 100644
--- a/gtk/gtkmenubar.c
+++ b/gtk/gtkmenubar.c
@@ -618,7 +618,6 @@ window_key_press_handler (GtkWidget *widget,
GtkMenuShell *menu_shell = GTK_MENU_SHELL (menubars->data);
_gtk_menu_shell_set_keyboard_mode (menu_shell, TRUE);
- _gtk_menu_shell_activate (menu_shell);
gtk_menu_shell_select_first (menu_shell, FALSE);
g_list_free (menubars);
diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c
index 8f23b75..b706c7d 100644
--- a/gtk/gtkmenuitem.c
+++ b/gtk/gtkmenuitem.c
@@ -1433,8 +1433,6 @@ gtk_real_menu_item_activate_item (GtkMenuItem *menu_item)
{
GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget->parent);
- _gtk_menu_shell_activate (menu_shell);
-
gtk_menu_shell_select_item (GTK_MENU_SHELL (widget->parent), widget);
_gtk_menu_item_popup_submenu (widget, FALSE);
diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c
index a7ad7b5..48de6a8 100644
--- a/gtk/gtkmenushell.c
+++ b/gtk/gtkmenushell.c
@@ -563,8 +563,8 @@ gtk_menu_shell_realize (GtkWidget *widget)
gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
}
-void
-_gtk_menu_shell_activate (GtkMenuShell *menu_shell)
+static void
+gtk_menu_shell_activate (GtkMenuShell *menu_shell)
{
if (!menu_shell->active)
{
@@ -609,7 +609,7 @@ gtk_menu_shell_button_press (GtkWidget *widget,
if (!menu_shell->active || !menu_shell->button)
{
- _gtk_menu_shell_activate (menu_shell);
+ gtk_menu_shell_activate (menu_shell);
menu_shell->button = event->button;
@@ -1204,6 +1204,8 @@ gtk_menu_shell_real_select_item (GtkMenuShell *menu_shell,
return;
}
+ gtk_menu_shell_activate (menu_shell);
+
menu_shell->active_menu_item = menu_item;
if (pack_dir == GTK_PACK_DIRECTION_TTB || pack_dir == GTK_PACK_DIRECTION_BTT)
_gtk_menu_item_set_placement (GTK_MENU_ITEM (menu_shell->active_menu_item),
diff --git a/gtk/gtkmenushell.h b/gtk/gtkmenushell.h
index 7672a2b..2d90c33 100644
--- a/gtk/gtkmenushell.h
+++ b/gtk/gtkmenushell.h
@@ -116,7 +116,6 @@ void gtk_menu_shell_select_first (GtkMenuShell *menu_shell,
gboolean search_sensitive);
void _gtk_menu_shell_select_last (GtkMenuShell *menu_shell,
gboolean search_sensitive);
-void _gtk_menu_shell_activate (GtkMenuShell *menu_shell);
gint _gtk_menu_shell_get_popup_delay (GtkMenuShell *menu_shell);
void gtk_menu_shell_cancel (GtkMenuShell *menu_shell);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]