comparison src/img-view.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
47 FullScreenData *fs; 47 FullScreenData *fs;
48 SlideShowData *ss; 48 SlideShowData *ss;
49 49
50 GList *list; 50 GList *list;
51 GList *list_pointer; 51 GList *list_pointer;
52
53 /* file list for edit menu */
54 GList *editmenu_fd_list;
52 }; 55 };
53 56
54 57
55 static GList *view_window_list = NULL; 58 static GList *view_window_list = NULL;
56 59
1238 else 1241 else
1239 view_new_layout_with_fd(imd->image_fd); 1242 view_new_layout_with_fd(imd->image_fd);
1240 view_window_close(vw); 1243 view_window_close(vw);
1241 } 1244 }
1242 1245
1246 static void view_popup_menu_destroy_cb(GtkWidget *widget, gpointer data)
1247 {
1248 ViewWindow *vw = data;
1249
1250 filelist_free(vw->editmenu_fd_list);
1251 vw->editmenu_fd_list = NULL;
1252 }
1253
1254 static GList *view_window_get_fd_list(ViewWindow *vw)
1255 {
1256 GList *list = NULL;
1257 ImageWindow *imd = view_window_active_image(vw);
1258
1259 if (imd)
1260 {
1261 FileData *fd = image_get_fd(imd);
1262 if (fd) list = g_list_append(NULL, file_data_ref(fd));
1263 }
1264
1265 return list;
1266 }
1267
1243 static GtkWidget *view_popup_menu(ViewWindow *vw) 1268 static GtkWidget *view_popup_menu(ViewWindow *vw)
1244 { 1269 {
1245 GtkWidget *menu; 1270 GtkWidget *menu;
1246 GtkWidget *item; 1271 GtkWidget *item;
1247 1272
1248 menu = popup_menu_short_lived(); 1273 menu = popup_menu_short_lived();
1274
1275 g_signal_connect(G_OBJECT(menu), "destroy",
1276 G_CALLBACK(view_popup_menu_destroy_cb), vw);
1249 1277
1250 menu_item_add_stock(menu, _("Zoom _in"), GTK_STOCK_ZOOM_IN, G_CALLBACK(view_zoom_in_cb), vw); 1278 menu_item_add_stock(menu, _("Zoom _in"), GTK_STOCK_ZOOM_IN, G_CALLBACK(view_zoom_in_cb), vw);
1251 menu_item_add_stock(menu, _("Zoom _out"), GTK_STOCK_ZOOM_OUT, G_CALLBACK(view_zoom_out_cb), vw); 1279 menu_item_add_stock(menu, _("Zoom _out"), GTK_STOCK_ZOOM_OUT, G_CALLBACK(view_zoom_out_cb), vw);
1252 menu_item_add_stock(menu, _("Zoom _1:1"), GTK_STOCK_ZOOM_100, G_CALLBACK(view_zoom_1_1_cb), vw); 1280 menu_item_add_stock(menu, _("Zoom _1:1"), GTK_STOCK_ZOOM_100, G_CALLBACK(view_zoom_1_1_cb), vw);
1253 menu_item_add_stock(menu, _("Fit image to _window"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(view_zoom_fit_cb), vw); 1281 menu_item_add_stock(menu, _("Fit image to _window"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(view_zoom_fit_cb), vw);
1254 menu_item_add_divider(menu); 1282 menu_item_add_divider(menu);
1255 1283
1256 item = submenu_add_edit(menu, NULL, G_CALLBACK(view_edit_cb), vw); 1284 vw->editmenu_fd_list = view_window_get_fd_list(vw);
1285 item = submenu_add_edit(menu, NULL, G_CALLBACK(view_edit_cb), vw, vw->editmenu_fd_list);
1257 menu_item_add_divider(item); 1286 menu_item_add_divider(item);
1258 menu_item_add(item, _("Set as _wallpaper"), G_CALLBACK(view_wallpaper_cb), vw); 1287 menu_item_add(item, _("Set as _wallpaper"), G_CALLBACK(view_wallpaper_cb), vw);
1259 1288
1260 submenu_add_alter(menu, G_CALLBACK(view_alter_cb), vw); 1289 submenu_add_alter(menu, G_CALLBACK(view_alter_cb), vw);
1261 1290