forked from AuroraMiddleware/gtk
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.
This commit is contained in:
parent
85ad434290
commit
fa48b42ef1
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user