Mercurial > geeqie
diff 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 |
line wrap: on
line diff
--- a/src/img-view.c Sun Mar 08 12:42:23 2009 +0000 +++ b/src/img-view.c Sun Mar 08 13:23:25 2009 +0000 @@ -49,6 +49,9 @@ GList *list; GList *list_pointer; + + /* file list for edit menu */ + GList *editmenu_fd_list; }; @@ -1240,6 +1243,28 @@ 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; @@ -1247,13 +1272,17 @@ 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);