X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=blobdiff_plain;f=src%2Fview-file%2Fview-file.cc;fp=src%2Fview-file%2Fview-file.cc;h=09941e02aeba9c1da0c13223da4f6497a6782ab7;hp=68c6e52cca9d98584c043f2e98e503a7cdc8b10a;hb=7a46b2160a79526ddf2f6bf50728454f01233ef3;hpb=3000a47a8792e0a3cae6b4c166cb14be8a7697b1 diff --git a/src/view-file/view-file.cc b/src/view-file/view-file.cc index 68c6e52c..09941e02 100644 --- a/src/view-file/view-file.cc +++ b/src/view-file/view-file.cc @@ -30,6 +30,7 @@ #include "dupe.h" #include "filedata.h" #include "history-list.h" +#include "img-view.h" #include "intl.h" #include "layout.h" #include "main-defines.h" @@ -430,16 +431,14 @@ static void vf_dnd_init(ViewFile *vf) GList *vf_pop_menu_file_list(ViewFile *vf) { - GList *ret; + if (!vf->click_fd) return nullptr; - switch (vf->type) - { - case FILEVIEW_LIST: ret = vflist_pop_menu_file_list(vf); break; - case FILEVIEW_ICON: ret = vficon_pop_menu_file_list(vf); break; - default: ret = nullptr; - } + if (vf_is_selected(vf, vf->click_fd)) + { + return vf_selection_get_list(vf); + } - return ret; + return vf_selection_get_one(vf, vf->click_fd); } GList *vf_selection_get_one(ViewFile *vf, FileData *fd) @@ -472,11 +471,20 @@ static void vf_pop_menu_view_cb(GtkWidget *, gpointer data) { auto vf = static_cast(data); - switch (vf->type) - { - case FILEVIEW_LIST: vflist_pop_menu_view_cb(vf); break; - case FILEVIEW_ICON: vficon_pop_menu_view_cb(vf); break; - } + if (!vf->click_fd) return; + + if (vf_is_selected(vf, vf->click_fd)) + { + GList *list; + + list = vf_selection_get_list(vf); + view_window_new_from_list(list); + filelist_free(list); + } + else + { + view_window_new(vf->click_fd); + } } static void vf_pop_menu_open_archive_cb(GtkWidget *, gpointer data)