[Goodies-commits] r5297 - xfmpc/trunk/src

Mike Massonnet mmassonnet at xfce.org
Sun Aug 24 18:20:21 CEST 2008


Author: mmassonnet
Date: 2008-08-24 16:20:21 +0000 (Sun, 24 Aug 2008)
New Revision: 5297

Modified:
   xfmpc/trunk/src/extended-interface.c
Log:
Make the context button behave as the combo box

* src/extended-interface.c:
  - Rework how the context button behaves against mouse clicks and
    keyboard presses, so that it mimics the combo box

Modified: xfmpc/trunk/src/extended-interface.c
===================================================================
--- xfmpc/trunk/src/extended-interface.c	2008-08-24 16:20:19 UTC (rev 5296)
+++ xfmpc/trunk/src/extended-interface.c	2008-08-24 16:20:21 UTC (rev 5297)
@@ -55,10 +55,11 @@
                                                              XfmpcExtendedInterface *extended_interface);
 static void             cb_repeat_switch                    (XfmpcExtendedInterface *extended_interface);
 static void             cb_random_switch                    (XfmpcExtendedInterface *extended_interface);
-static void             cb_context_menu                     (GtkToggleButton *button,
+static void             cb_context_menu_clicked             (GtkToggleButton *button,
                                                              XfmpcExtendedInterface *extended_interface);
 static void             cb_context_menu_deactivate          (GtkMenuShell *menu,
                                                              GtkWidget *attach_widget);
+static void             popup_context_menu                  (XfmpcExtendedInterface *extended_interface);
 static void             position_context_menu               (GtkMenu *menu,
                                                              gint *x,
                                                              gint *y,
@@ -173,8 +174,10 @@
   priv->context_button = GTK_WIDGET (xfce_arrow_button_new (GTK_ARROW_DOWN));
   gtk_widget_set_tooltip_text (priv->context_button, _("Context Menu"));
   gtk_box_pack_start (GTK_BOX (hbox), priv->context_button, FALSE, FALSE, 0);
-  g_signal_connect (priv->context_button, "toggled",
-                    G_CALLBACK (cb_context_menu), extended_interface);
+  g_signal_connect_swapped (priv->context_button, "pressed",
+                            G_CALLBACK (popup_context_menu), extended_interface);
+  g_signal_connect (priv->context_button, "clicked",
+                    G_CALLBACK (cb_context_menu_clicked), extended_interface);
 
   /* Combo box */
   priv->list_store = gtk_list_store_new (N_COLUMNS,
@@ -335,14 +338,27 @@
 }
 
 static void
-cb_context_menu (GtkToggleButton *button,
-                 XfmpcExtendedInterface *extended_interface)
+cb_context_menu_clicked (GtkToggleButton *button,
+                         XfmpcExtendedInterface *extended_interface)
 {
-  XfmpcExtendedInterfacePrivate *priv = XFMPC_EXTENDED_INTERFACE_GET_PRIVATE (extended_interface);
-
   if (!gtk_toggle_button_get_active (button))
     return;
 
+  popup_context_menu (extended_interface);
+}
+
+static void
+cb_context_menu_deactivate (GtkMenuShell *menu,
+                            GtkWidget *attach_widget)
+{
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (attach_widget), FALSE);
+}
+
+static void
+popup_context_menu (XfmpcExtendedInterface *extended_interface)
+{
+  XfmpcExtendedInterfacePrivate *priv = XFMPC_EXTENDED_INTERFACE_GET_PRIVATE (extended_interface);
+
   if (GTK_IS_MENU (priv->context_menu))
     gtk_menu_detach (GTK_MENU (priv->context_menu));
   xfmpc_extended_interface_context_menu_new (extended_interface, priv->context_button);
@@ -351,19 +367,12 @@
                   NULL,
                   NULL,
                   (GtkMenuPositionFunc) position_context_menu,
-                  GTK_WIDGET (button),
+                  GTK_WIDGET (priv->context_button),
                   0,
                   gtk_get_current_event_time ());
 }
 
 static void
-cb_context_menu_deactivate (GtkMenuShell *menu,
-                            GtkWidget *attach_widget)
-{
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (attach_widget), FALSE);
-}
-
-static void
 position_context_menu (GtkMenu *menu,
                        gint *x,
                        gint *y,




More information about the Goodies-commits mailing list