[gtk+] menubutton: Fix possible button/popover state inconsistences



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]