summaryrefslogtreecommitdiff
path: root/gtk/gtkmenutoolbutton.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkmenutoolbutton.c')
-rw-r--r--gtk/gtkmenutoolbutton.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/gtk/gtkmenutoolbutton.c b/gtk/gtkmenutoolbutton.c
index ad6932630f..7881d99d75 100644
--- a/gtk/gtkmenutoolbutton.c
+++ b/gtk/gtkmenutoolbutton.c
@@ -261,6 +261,9 @@ button_state_changed_cb (GtkWidget *widget,
GtkWidget *other;
GtkStateType state = GTK_WIDGET_STATE (widget);
+ if (state == GTK_STATE_INSENSITIVE)
+ return;
+
priv = GTK_MENU_TOOL_BUTTON_GET_PRIVATE (button);
other = (widget == priv->arrow_button) ? priv->button : priv->arrow_button;
@@ -381,10 +384,17 @@ arrow_button_button_press_event_cb (GtkWidget *widget,
GdkEventButton *event,
GtkMenuToolButton *button)
{
- popup_menu_under_arrow (button, event);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+ if (event->button == 1)
+ {
+ popup_menu_under_arrow (button, event);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
- return TRUE;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
}
static void
@@ -426,10 +436,12 @@ gtk_menu_tool_button_init (GtkMenuToolButton *button)
button->priv->arrow_button = arrow_button;
button->priv->box = box;
+#if 0
g_signal_connect (real_button, "state_changed",
G_CALLBACK (button_state_changed_cb), button);
g_signal_connect (arrow_button, "state_changed",
G_CALLBACK (button_state_changed_cb), button);
+#endif
g_signal_connect (arrow_button, "toggled",
G_CALLBACK (arrow_button_toggled_cb), button);
g_signal_connect (arrow_button, "button_press_event",