From: Vladimir Nadvornik Date: Fri, 28 Aug 2009 21:01:29 +0000 (+0000) Subject: improved printing of selection X-Git-Tag: v1.0.0~74 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=1dc77a83b26aed8ff77e59837bf03e77789cb6b7 improved printing of selection --- diff --git a/src/filedata.c b/src/filedata.c index c20d7a17..1397998d 100644 --- a/src/filedata.c +++ b/src/filedata.c @@ -2466,23 +2466,26 @@ static gboolean file_data_list_dump(GList *list) } #endif -GList *file_data_process_groups_in_selection(GList *list, GList **ungrouped_list) +GList *file_data_process_groups_in_selection(GList *list, gboolean ungroup, GList **ungrouped_list) { GList *out = NULL; GList *work = list; /* change partial groups to independent files */ - while (work) + if (ungroup) { - FileData *fd = work->data; - work = work->next; - - if (!file_data_list_contains_whole_group(list, fd)) + while (work) { - file_data_disable_grouping(fd, TRUE); - if (ungrouped_list) + FileData *fd = work->data; + work = work->next; + + if (!file_data_list_contains_whole_group(list, fd)) { - *ungrouped_list = g_list_prepend(*ungrouped_list, file_data_ref(fd)); + file_data_disable_grouping(fd, TRUE); + if (ungrouped_list) + { + *ungrouped_list = g_list_prepend(*ungrouped_list, file_data_ref(fd)); + } } } } @@ -2495,17 +2498,14 @@ GList *file_data_process_groups_in_selection(GList *list, GList **ungrouped_list FileData *fd = work->data; work = work->next; - if (!fd->parent) + if (!fd->parent || + (!ungroup && !file_data_list_contains_whole_group(list, fd))) { - out = g_list_prepend(out, fd); - } - else - { - file_data_unref(fd); + out = g_list_prepend(out, file_data_ref(fd)); } } - g_list_free(list); + filelist_free(list); out = g_list_reverse(out); return out; diff --git a/src/filedata.h b/src/filedata.h index 7a602fd7..40501482 100644 --- a/src/filedata.h +++ b/src/filedata.h @@ -127,7 +127,7 @@ gboolean file_data_sc_apply_ci(FileData *fd); void file_data_sc_free_ci(FileData *fd); void file_data_sc_free_ci_list(GList *fd_list); -GList *file_data_process_groups_in_selection(GList *list, GList **ungrouped); +GList *file_data_process_groups_in_selection(GList *list, gboolean ungroup, GList **ungrouped); typedef void (*FileDataNotifyFunc)(FileData *fd, NotifyType type, gpointer data); diff --git a/src/print.c b/src/print.c index a708255f..ec2a239f 100644 --- a/src/print.c +++ b/src/print.c @@ -3356,7 +3356,7 @@ void print_window_new(FileData *fd, GList *selection, GList *list, GtkWidget *pa pw = g_new0(PrintWindow, 1); pw->source_fd = file_data_ref(fd); - pw->source_selection = selection; + pw->source_selection = file_data_process_groups_in_selection(selection, FALSE, NULL); pw->source_list = list; pw->source = print_pref_int(PRINT_PREF_SOURCE, PRINT_SOURCE_SELECTION); diff --git a/src/utilops.c b/src/utilops.c index a1e71189..a11d405f 100644 --- a/src/utilops.c +++ b/src/utilops.c @@ -1955,7 +1955,7 @@ static void file_util_delete_full(FileData *source_fd, GList *flist, GtkWidget * if (!flist) return; - flist = file_data_process_groups_in_selection(flist, &ungrouped); + flist = file_data_process_groups_in_selection(flist, TRUE, &ungrouped); if (!file_data_sc_add_ci_delete_list(flist)) { @@ -2045,7 +2045,7 @@ static void file_util_move_full(FileData *source_fd, GList *flist, const gchar * if (!flist) return; - flist = file_data_process_groups_in_selection(flist, &ungrouped); + flist = file_data_process_groups_in_selection(flist, TRUE, &ungrouped); if (!file_data_sc_add_ci_move_list(flist, dest_path)) { @@ -2094,7 +2094,7 @@ static void file_util_copy_full(FileData *source_fd, GList *flist, const gchar * if (file_util_write_metadata_first(UTILITY_TYPE_COPY, phase, flist, dest_path, NULL, parent)) return; - flist = file_data_process_groups_in_selection(flist, &ungrouped); + flist = file_data_process_groups_in_selection(flist, TRUE, &ungrouped); if (!file_data_sc_add_ci_copy_list(flist, dest_path)) { @@ -2140,7 +2140,7 @@ static void file_util_rename_full(FileData *source_fd, GList *flist, const gchar if (!flist) return; - flist = file_data_process_groups_in_selection(flist, &ungrouped); + flist = file_data_process_groups_in_selection(flist, TRUE, &ungrouped); if (!file_data_sc_add_ci_rename_list(flist, dest_path)) { @@ -2217,7 +2217,7 @@ static void file_util_start_editor_full(const gchar *key, FileData *source_fd, G if (file_util_write_metadata_first(UTILITY_TYPE_FILTER, phase, flist, dest_path, key, parent)) return; - flist = file_data_process_groups_in_selection(flist, &ungrouped); + flist = file_data_process_groups_in_selection(flist, TRUE, &ungrouped); if (!file_data_sc_add_ci_unspecified_list(flist, dest_path)) {