comparison src/search.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 cf4029d10d38
comparison
equal deleted inserted replaced
1396:58f0b4586c8c 1397:a0bd58a6535f
188 FileData *click_fd; 188 FileData *click_fd;
189 189
190 ThumbLoader *thumb_loader; 190 ThumbLoader *thumb_loader;
191 gint thumb_enable; 191 gint thumb_enable;
192 FileData *thumb_fd; 192 FileData *thumb_fd;
193
194 /* file list for edit menu */
195 GList *editmenu_fd_list;
196
193 }; 197 };
194 198
195 typedef struct _MatchFileData MatchFileData; 199 typedef struct _MatchFileData MatchFileData;
196 struct _MatchFileData 200 struct _MatchFileData
197 { 201 {
977 SearchData *sd = data; 981 SearchData *sd = data;
978 982
979 search_result_clear(sd); 983 search_result_clear(sd);
980 } 984 }
981 985
986 static void search_result_menu_destroy_cb(GtkWidget *widget, gpointer data)
987 {
988 SearchData *sd = data;
989
990 filelist_free(sd->editmenu_fd_list);
991 sd->editmenu_fd_list = NULL;
992 }
993
982 static GtkWidget *search_result_menu(SearchData *sd, gint on_row, gint empty) 994 static GtkWidget *search_result_menu(SearchData *sd, gint on_row, gint empty)
983 { 995 {
984 GtkWidget *menu; 996 GtkWidget *menu;
985 GtkWidget *item; 997 GtkWidget *item;
986 998
987 menu = popup_menu_short_lived(); 999 menu = popup_menu_short_lived();
1000 g_signal_connect(G_OBJECT(menu), "destroy",
1001 G_CALLBACK(search_result_menu_destroy_cb), sd);
1002
988 menu_item_add_sensitive(menu, _("_View"), on_row, 1003 menu_item_add_sensitive(menu, _("_View"), on_row,
989 G_CALLBACK(sr_menu_view_cb), sd); 1004 G_CALLBACK(sr_menu_view_cb), sd);
990 menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, on_row, 1005 menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, on_row,
991 G_CALLBACK(sr_menu_viewnew_cb), sd); 1006 G_CALLBACK(sr_menu_viewnew_cb), sd);
992 menu_item_add_divider(menu); 1007 menu_item_add_divider(menu);
993 menu_item_add_sensitive(menu, _("Select all"), !empty, 1008 menu_item_add_sensitive(menu, _("Select all"), !empty,
994 G_CALLBACK(sr_menu_select_all_cb), sd); 1009 G_CALLBACK(sr_menu_select_all_cb), sd);
995 menu_item_add_sensitive(menu, _("Select none"), !empty, 1010 menu_item_add_sensitive(menu, _("Select none"), !empty,
996 G_CALLBACK(sr_menu_select_none_cb), sd); 1011 G_CALLBACK(sr_menu_select_none_cb), sd);
997 menu_item_add_divider(menu); 1012 menu_item_add_divider(menu);
998 submenu_add_edit(menu, &item, G_CALLBACK(sr_menu_edit_cb), sd); 1013
1014 sd->editmenu_fd_list = search_result_selection_list(sd);
1015 submenu_add_edit(menu, &item, G_CALLBACK(sr_menu_edit_cb), sd, sd->editmenu_fd_list);
999 if (!on_row) gtk_widget_set_sensitive(item, FALSE); 1016 if (!on_row) gtk_widget_set_sensitive(item, FALSE);
1000 menu_item_add_stock_sensitive(menu, _("Add to new collection"), GTK_STOCK_INDEX, on_row, 1017 menu_item_add_stock_sensitive(menu, _("Add to new collection"), GTK_STOCK_INDEX, on_row,
1001 G_CALLBACK(sr_menu_collection_cb), sd); 1018 G_CALLBACK(sr_menu_collection_cb), sd);
1002 menu_item_add_stock_sensitive(menu, _("Print..."), GTK_STOCK_PRINT, on_row, 1019 menu_item_add_stock_sensitive(menu, _("Print..."), GTK_STOCK_PRINT, on_row,
1003 G_CALLBACK(sr_menu_print_cb), sd); 1020 G_CALLBACK(sr_menu_print_cb), sd);