[gtk+] menubutton: Fix possible button/popover state inconsistences
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] menubutton: Fix possible button/popover state inconsistences
- Date: Fri, 20 Feb 2015 13:52:02 +0000 (UTC)
commit fa48b42ef1b1e43b1728d0fea51f68e760dd37b0
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Feb 20 13:33:09 2015 +0100
menubutton: Fix possible button/popover state inconsistences
While a popover is hiding, the modal grab is already gone and the toggle
button is clickable again, but clicking again at that time will result in
gtk_widget_show() trying to show an already shown widget (although fading
out and hidden soon) and the toggle button activated.
So let the menubutton set the active status only if the menu/popover
widget wasn't already shown, and ensure this doesn't get triggered by
double/triple button press events.
gtk/gtkmenubutton.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkmenubutton.c b/gtk/gtkmenubutton.c
index 422c07f..de06bf1 100644
--- a/gtk/gtkmenubutton.c
+++ b/gtk/gtkmenubutton.c
@@ -442,10 +442,16 @@ gtk_menu_button_button_press_event (GtkWidget *widget,
if (event->button == GDK_BUTTON_PRIMARY)
{
- if (priv->menu)
+ /* Filter out double/triple clicks */
+ if (event->type != GDK_BUTTON_PRESS)
+ return TRUE;
+
+ if (priv->menu && !gtk_widget_get_visible (priv->menu))
popup_menu (menu_button, event);
- else if (priv->popover)
+ else if (priv->popover && !gtk_widget_get_visible (priv->popover))
gtk_widget_show (priv->popover);
+ else
+ return TRUE;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]