[Xfce4-commits] <xfce4-panel:master> Use activate signal for launcher menu items (bug #6485).

Nick Schermer noreply at xfce.org
Tue Jun 1 18:10:02 CEST 2010


Updating branch refs/heads/master
         to 320b58d9c52f0c3beeea4883d7e1c5c3dd33a74a (commit)
       from f6835b80d715440abcd0c7af666e7dc5d579c932 (commit)

commit 320b58d9c52f0c3beeea4883d7e1c5c3dd33a74a
Author: Stefan Stuhr <xfce-bug at sstuhr.dk>
Date:   Tue Jun 1 18:08:07 2010 +0200

    Use activate signal for launcher menu items (bug #6485).

 plugins/launcher/launcher.c |   39 +++++++++++++++++++++++----------------
 1 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/plugins/launcher/launcher.c b/plugins/launcher/launcher.c
index efa0888..d6fd8ae 100644
--- a/plugins/launcher/launcher.c
+++ b/plugins/launcher/launcher.c
@@ -77,8 +77,7 @@ static GdkPixbuf *launcher_plugin_tooltip_pixbuf                (GdkScreen
                                                                  const gchar          *icon_name);
 static void       launcher_plugin_menu_deactivate               (GtkWidget            *menu,
                                                                  LauncherPlugin       *plugin);
-static gboolean   launcher_plugin_menu_item_pressed             (GtkMenuItem          *widget,
-                                                                 GdkEventButton       *event,
+static void       launcher_plugin_menu_item_activate            (GtkMenuItem          *widget,
                                                                  GarconMenuItem       *item);
 static void       launcher_plugin_menu_item_drag_data_received  (GtkWidget            *widget,
                                                                  GdkDragContext       *context,
@@ -1317,29 +1316,39 @@ launcher_plugin_menu_deactivate (GtkWidget      *menu,
 
 
 
-static gboolean
-launcher_plugin_menu_item_pressed (GtkMenuItem      *widget,
-                                   GdkEventButton   *event,
-                                   GarconMenuItem   *item)
+static void
+launcher_plugin_menu_item_activate (GtkMenuItem      *widget,
+                                    GarconMenuItem   *item)
 {
   LauncherPlugin *plugin;
   GdkScreen      *screen;
+  GdkEvent       *event;
+  guint32         event_time;
 
-  panel_return_val_if_fail (GTK_IS_MENU_ITEM (widget), FALSE);
-  panel_return_val_if_fail (GARCON_IS_MENU_ITEM (item), FALSE);
+  panel_return_if_fail (GTK_IS_MENU_ITEM (widget));
+  panel_return_if_fail (GARCON_IS_MENU_ITEM (item));
+
+  /* get a copy of the event causing the menu item to activate */
+  event = gtk_get_current_event ();
+  event_time = event != NULL ? gdk_event_get_time (event) : GDK_CURRENT_TIME;
 
   /* get the widget screen */
   screen = gtk_widget_get_screen (GTK_WIDGET (widget));
 
   /* launch the command */
-  if (G_UNLIKELY (event->button == 2))
-    launcher_plugin_item_exec_from_clipboard (item, event->time, screen);
+  if (event != NULL
+      && event->type == GDK_BUTTON_RELEASE
+      && event->button.button == 2)
+    launcher_plugin_item_exec_from_clipboard (item, event_time, screen);
   else
-    launcher_plugin_item_exec (item, event->time, screen, NULL);
+    launcher_plugin_item_exec (item, event_time, screen, NULL);
+
+  if (event != NULL)
+    gdk_event_free (event);
 
   /* get the plugin */
   plugin = g_object_get_qdata (G_OBJECT (widget), launcher_plugin_quark);
-  panel_return_val_if_fail (XFCE_IS_LAUNCHER_PLUGIN (plugin), FALSE);
+  panel_return_if_fail (XFCE_IS_LAUNCHER_PLUGIN (plugin));
 
   /* move the item to the first position if enabled */
   if (G_UNLIKELY (plugin->move_first))
@@ -1352,8 +1361,6 @@ launcher_plugin_menu_item_pressed (GtkMenuItem      *widget,
       launcher_plugin_menu_destroy (plugin);
       launcher_plugin_button_update (plugin);
     }
-
-  return FALSE;
 }
 
 
@@ -1443,8 +1450,8 @@ launcher_plugin_menu_construct (LauncherPlugin *plugin)
       gtk_widget_show (mi);
       gtk_drag_dest_set (mi, GTK_DEST_DEFAULT_ALL, drop_targets,
                          G_N_ELEMENTS (drop_targets), GDK_ACTION_COPY);
-      g_signal_connect (G_OBJECT (mi), "button-press-event",
-          G_CALLBACK (launcher_plugin_menu_item_pressed), item);
+      g_signal_connect (G_OBJECT (mi), "activate",
+          G_CALLBACK (launcher_plugin_menu_item_activate), item);
       g_signal_connect (G_OBJECT (mi), "drag-data-received",
           G_CALLBACK (launcher_plugin_menu_item_drag_data_received), item);
       g_signal_connect (G_OBJECT (mi), "drag-leave",



More information about the Xfce4-commits mailing list