GList *list;
GList *list_pointer;
+
+ /* file list for edit menu */
+ GList *editmenu_fd_list;
};
view_window_close(vw);
}
+static void view_popup_menu_destroy_cb(GtkWidget *widget, gpointer data)
+{
+ ViewWindow *vw = data;
+
+ filelist_free(vw->editmenu_fd_list);
+ vw->editmenu_fd_list = NULL;
+}
+
+static GList *view_window_get_fd_list(ViewWindow *vw)
+{
+ GList *list = NULL;
+ ImageWindow *imd = view_window_active_image(vw);
+
+ if (imd)
+ {
+ FileData *fd = image_get_fd(imd);
+ if (fd) list = g_list_append(NULL, file_data_ref(fd));
+ }
+
+ return list;
+}
+
static GtkWidget *view_popup_menu(ViewWindow *vw)
{
GtkWidget *menu;
menu = popup_menu_short_lived();
+ g_signal_connect(G_OBJECT(menu), "destroy",
+ G_CALLBACK(view_popup_menu_destroy_cb), vw);
+
menu_item_add_stock(menu, _("Zoom _in"), GTK_STOCK_ZOOM_IN, G_CALLBACK(view_zoom_in_cb), vw);
menu_item_add_stock(menu, _("Zoom _out"), GTK_STOCK_ZOOM_OUT, G_CALLBACK(view_zoom_out_cb), vw);
menu_item_add_stock(menu, _("Zoom _1:1"), GTK_STOCK_ZOOM_100, G_CALLBACK(view_zoom_1_1_cb), vw);
menu_item_add_stock(menu, _("Fit image to _window"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(view_zoom_fit_cb), vw);
menu_item_add_divider(menu);
- item = submenu_add_edit(menu, NULL, G_CALLBACK(view_edit_cb), vw);
+ vw->editmenu_fd_list = view_window_get_fd_list(vw);
+ item = submenu_add_edit(menu, NULL, G_CALLBACK(view_edit_cb), vw, vw->editmenu_fd_list);
menu_item_add_divider(item);
menu_item_add(item, _("Set as _wallpaper"), G_CALLBACK(view_wallpaper_cb), vw);