[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