Author: post
Date: 2010-12-30 15:18:36 +0100 (Thu, 30 Dec 2010)
New Revision: 3743
Modified:
trunk/src/rs-actions.c
Log:
Backup ALL directories from which images has been tagged, not just the
directory of the last file.
Modified: trunk/src/rs-actions.c
===================================================================
--- trunk/src/rs-actions.c 2010-12-30 02:49:26 UTC (rev 3742)
+++ trunk/src/rs-actions.c 2010-12-30 14:18:36 UTC (rev 3743)
@@ -809,6 +809,8 @@
static void
tag_photo_input_changed(GtkWidget *button, gpointer user_data)
{
+ GHashTableIter iter;
+ gpointer key, value;
RSLibrary *library = rs_library_get_singleton();
TagPhotoData *info = (TagPhotoData*)(user_data);
RS_BLOB *rs = info->rs;
@@ -817,6 +819,7 @@
GList * selected = rs_store_get_selected_names(rs->store);
gint num_selected = g_list_length(selected);
gint cur, i;
+ GHashTable* directories = g_hash_table_new_full(g_str_hash,
g_str_equal, g_free, NULL);
const char* entry_text = gtk_entry_get_text(entry);
if (num_selected > 0 && entry_text)
@@ -829,9 +832,27 @@
g_free(tag);
for(cur=0;cur<num_selected;cur++)
- rs_io_idle_add_tag(g_list_nth_data(selected,
cur), tag_id, FALSE, -1);
+ {
+ gchar* filename = g_list_nth_data(selected,
cur);
+ rs_io_idle_add_tag(filename, tag_id, FALSE, -1);
+
+ if (0 == i)
+ {
+ gchar* dir =
g_path_get_dirname(filename);
+ if (NULL ==
g_hash_table_lookup(directories, dir))
+
g_hash_table_insert(directories, dir, filename);
+ else
+ g_free(dir);
+ }
+ }
}
- rs_io_idle_add_tag(g_list_nth_data(selected, num_selected-1),
-2, FALSE, -1);
+
+ g_hash_table_iter_init (&iter, directories);
+ while (g_hash_table_iter_next (&iter, &key, &value))
+ {
+ rs_io_idle_add_tag(value, -2, FALSE, -1);
+ }
+ g_hash_table_remove_all(directories);
g_list_free(tags);
}
GdkWindow *window = gtk_widget_get_parent_window(GTK_WIDGET(entry));
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit