Commit f19c3896 authored by Emilio Pozuelo Monfort's avatar Emilio Pozuelo Monfort Committed by Emilio Pozuelo Monfort

menushell: don't activate a menu entry when opening a big menu

If a menu is opened and it doesn't fit entirely below or above
the menu bar, gtk+ will place it on top. The button release will
then activate the popup item that happens to appear under the
cursor. Avoid this by ignoring release events if they originated
in the parent menu bar and the duration of the press was too short.
parent b39ce832
...@@ -809,6 +809,18 @@ gtk_menu_shell_button_release (GtkWidget *widget, ...@@ -809,6 +809,18 @@ gtk_menu_shell_button_release (GtkWidget *widget,
GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget);
GtkMenuShellPrivate *priv = menu_shell->priv; GtkMenuShellPrivate *priv = menu_shell->priv;
if (priv->parent_menu_shell &&
(event->time - GTK_MENU_SHELL (priv->parent_menu_shell)->priv->activate_time) < MENU_SHELL_TIMEOUT)
/* The button-press originated in the parent menu bar and we are
* a pop-up menu. It was a quick press-and-release so we don't want
* to activate an item but we leave the popup in place instead.
GTK_MENU_SHELL (priv->parent_menu_shell)->priv->activate_time = 0;
return TRUE;
if (priv->active) if (priv->active)
{ {
GtkWidget *menu_item; GtkWidget *menu_item;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment