[Goodies-commits] r2927 - in xfce4-places-plugin/trunk: . panel-plugin

Diego Ongaro ongardie at xfce.org
Sat Jul 28 21:42:26 CEST 2007


Author: ongardie
Date: 2007-07-28 19:42:26 +0000 (Sat, 28 Jul 2007)
New Revision: 2927

Modified:
   xfce4-places-plugin/trunk/ChangeLog
   xfce4-places-plugin/trunk/panel-plugin/view.c
Log:
2007-07-28	Diego Ongaro <ongardie at gmail.com>

* Handle alternate menu actions better.



Modified: xfce4-places-plugin/trunk/ChangeLog
===================================================================
--- xfce4-places-plugin/trunk/ChangeLog	2007-07-26 21:52:05 UTC (rev 2926)
+++ xfce4-places-plugin/trunk/ChangeLog	2007-07-28 19:42:26 UTC (rev 2927)
@@ -1,3 +1,7 @@
+2007-07-28	Diego Ongaro <ongardie at gmail.com>
+
+	* Handle alternate menu actions better.
+
 2007-07-26	Diego Ongaro <ongardie at gmail.com>
 
 	* Fixed bug #3350 (Expression compares a char* pointer with a

Modified: xfce4-places-plugin/trunk/panel-plugin/view.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/view.c	2007-07-26 21:52:05 UTC (rev 2926)
+++ xfce4-places-plugin/trunk/panel-plugin/view.c	2007-07-28 19:42:26 UTC (rev 2927)
@@ -527,22 +527,8 @@
 }
 
 gboolean
-places_view_cb_menu_item_press(GtkWidget *menu_item, GdkEventButton *event, PlacesData *pd)
+places_view_cb_menu_item_do_alt(PlacesData *pd, GtkWidget *menu_item)
 {
-
-    gboolean ctrl =  (event->state & GDK_CONTROL_MASK) && 
-                    !(event->state & (GDK_MOD1_MASK|GDK_SHIFT_MASK|GDK_MOD4_MASK));
-
-    if(event->button == 1 && !ctrl){
-        const gchar *uri = (const gchar*) g_object_get_data(G_OBJECT(menu_item), "uri");
-        if(uri != NULL){
-            places_load_thunar(uri);
-            return FALSE;
-        }
-        return TRUE;
-
-    }else if(event->button == 3 || (event->button == 1 && ctrl)){
-    
         const GSList *actions = (const GSList*) g_object_get_data(G_OBJECT(menu_item), "actions");
         if(actions != NULL){
     
@@ -561,16 +547,40 @@
             gtk_menu_popup(GTK_MENU(context),
                            NULL, NULL,
                            NULL, NULL,
-                           event->button, event->time);
+                           0, gtk_get_current_event_time());
             g_signal_connect_swapped(context, "deactivate", G_CALLBACK(places_view_open_menu), pd);
         }
 
         return TRUE;
-    }
+}
 
-    return TRUE;
+gboolean
+places_view_cb_menu_item_do_main(PlacesData *pd, GtkWidget *menu_item)
+{
+        const gchar *uri = (const gchar*) g_object_get_data(G_OBJECT(menu_item), "uri");
+        if(uri != NULL){
+            places_load_thunar(uri);
+            return FALSE;
+        }
+        return TRUE;
 }
 
+
+gboolean
+places_view_cb_menu_item_press(GtkWidget *menu_item, GdkEventButton *event, PlacesData *pd)
+{
+
+    gboolean ctrl =  (event->state & GDK_CONTROL_MASK) && 
+                    !(event->state & (GDK_MOD1_MASK|GDK_SHIFT_MASK|GDK_MOD4_MASK));
+    
+    if(event->button == 3 || (event->button == 1 && ctrl))
+        return places_view_cb_menu_item_do_alt(pd, menu_item);
+    else if(event->button == 1 && !ctrl)
+        return TRUE; /* must be insensitive, so don't close the menu */
+    else
+        return FALSE;
+}
+
 // Recent Documents
 
 #if USE_RECENT_DOCUMENTS
@@ -606,6 +616,7 @@
     g_return_if_fail(label != NULL && strlen(label));
 
     PlacesData *pd = (PlacesData*) _pd;
+    GtkWidget *item;
 
     if(pd->view_needs_separator){
         gtk_menu_shell_append(GTK_MENU_SHELL(pd->view_menu),
@@ -613,7 +624,7 @@
         pd->view_needs_separator = FALSE;
     }
 
-    GtkWidget *item = gtk_image_menu_item_new_with_label(label);
+    item = gtk_image_menu_item_new_with_label(label);
 
     if(pd->cfg->show_icons && icon != NULL){
         GdkPixbuf *pb = xfce_themed_icon_load(icon, 16);
@@ -627,16 +638,20 @@
 
     if(uri != NULL){
         
+        g_object_set_data(G_OBJECT(item), "uri", (gchar*) uri);
+
         if(strncmp(uri, "trash://", 8) != 0){
-            g_object_set_data(G_OBJECT(item), "uri", (gchar*) uri);
             BookmarkAction *terminal = g_new0(BookmarkAction, 1);
             terminal->label = "Open Terminal Here";
             terminal->pass_thru = (gchar*) uri;
             terminal->action = places_view_load_terminal_wrapper;
             actions = g_slist_append(actions, terminal);
         }
-    }else
+
+    }else{
+        /* Probably an unmounted volume. Gray it out. */
         gtk_widget_set_sensitive(gtk_bin_get_child(GTK_BIN(item)), FALSE);
+    }
  
 
     if(actions != NULL)
@@ -644,6 +659,8 @@
         
     g_signal_connect(item, "button-release-event",
                      G_CALLBACK(places_view_cb_menu_item_press), pd);
+    g_signal_connect_swapped(item, "activate",
+                     G_CALLBACK(places_view_cb_menu_item_do_main), pd);
 
     gtk_menu_shell_append(GTK_MENU_SHELL(pd->view_menu), item);
 




More information about the Goodies-commits mailing list