diff src/dupe.c @ 1397:a0bd58a6535f

In various Edit context menus, only display editors that match the file types in the selection.
author zas_
date Sun, 08 Mar 2009 13:23:25 +0000
parents fe4da037be21
children 3a9fb1b52559
line wrap: on
line diff
--- a/src/dupe.c	Sun Mar 08 12:42:23 2009 +0000
+++ b/src/dupe.c	Sun Mar 08 13:23:25 2009 +0000
@@ -2211,6 +2211,30 @@
 	dupe_window_close(dw);
 }
 
+static void dupe_menu_popup_destroy_cb(GtkWidget *widget, gpointer data)
+{
+	DupeWindow *dw = data;
+
+	filelist_free(dw->editmenu_fd_list);
+	dw->editmenu_fd_list = NULL;
+}	
+
+static GList *dupe_window_get_fd_list(DupeWindow *dw)
+{
+	GList *list;
+
+	if (GTK_WIDGET_HAS_FOCUS(dw->second_listview))
+		{
+		list = dupe_listview_get_selection(dw, dw->second_listview);
+		}
+	else
+		{
+		list = dupe_listview_get_selection(dw, dw->listview);
+		}
+
+	return list;
+}
+
 static GtkWidget *dupe_menu_popup_main(DupeWindow *dw, DupeItem *di)
 {
 	GtkWidget *menu;
@@ -2220,6 +2244,9 @@
 	on_row = (di != NULL);
 
 	menu = popup_menu_short_lived();
+	g_signal_connect(G_OBJECT(menu), "destroy",
+			 G_CALLBACK(dupe_menu_popup_destroy_cb), dw);
+
 	menu_item_add_sensitive(menu, _("_View"), on_row,
 				G_CALLBACK(dupe_menu_view_cb), dw);
 	menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, on_row,
@@ -2234,7 +2261,9 @@
 	menu_item_add_sensitive(menu, _("Select group _2 duplicates"), (dw->dupes != NULL),
 				G_CALLBACK(dupe_menu_select_dupes_set2_cb), dw);
 	menu_item_add_divider(menu);
-	submenu_add_edit(menu, &item, G_CALLBACK(dupe_menu_edit_cb), dw);
+	
+	dw->editmenu_fd_list = dupe_window_get_fd_list(dw);
+	submenu_add_edit(menu, &item, G_CALLBACK(dupe_menu_edit_cb), dw, dw->editmenu_fd_list);
 	if (!on_row) gtk_widget_set_sensitive(item, FALSE);
 	menu_item_add_stock_sensitive(menu, _("Add to new collection"), GTK_STOCK_INDEX, on_row,
 				G_CALLBACK(dupe_menu_collection_cb), dw);