From ca419145185f15e8d9cc2cdab516683ac39c6502 Mon Sep 17 00:00:00 2001 From: Bernard Jungen Date: Sat, 18 Apr 2009 19:06:28 +0200 Subject: [PATCH] Save display settings: properties preset + bug fix + remove path Toggle properties in save window according to those saved for the current path, or to the last ones used. Fixed bug where thumbnail setting was saved only if display style was selected. Remove path where no property at all is selected. --- ROX-Filer/src/filer.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/ROX-Filer/src/filer.c b/ROX-Filer/src/filer.c index 8381c4ca..2123913e 100644 --- a/ROX-Filer/src/filer.c +++ b/ROX-Filer/src/filer.c @@ -118,6 +118,7 @@ enum settings_flags{ SET_DETAILS=32, /* view_type, details_type */ SET_THUMBS=64, /* show_thumbs */ SET_FILTER=128, /* filter_type, filter */ + SET_ALL=255 /* all flags */ }; /* Static prototypes */ @@ -3061,7 +3062,8 @@ static void store_settings(Settings *set) settings_free(old); } - g_hash_table_insert(settings_table, set->path, set); + if (set->flags & SET_ALL) + g_hash_table_insert(settings_table, set->path, set); } /* TODO: use symbolic names in the XML file where possible */ @@ -3220,7 +3222,7 @@ static void add_nodes(gpointer key, gpointer value, gpointer data) xmlNewChild(sub, NULL, "DetailsType", tmp); g_free(tmp); } - if(set->flags & SET_STYLE) { + if(set->flags & SET_THUMBS) { tmp=g_strdup_printf("%d", set->show_thumbs); xmlNewChild(sub, NULL, "ShowThumbs", tmp); g_free(tmp); @@ -3322,6 +3324,7 @@ typedef struct settings_window { Settings *set; } SettingsWindow; +static gint last_display_settings_flags = ~0; static void settings_response(GtkWidget *window, gint response, SettingsWindow *set_win) @@ -3346,7 +3349,7 @@ static void settings_response(GtkWidget *window, gint response, if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(set_win->filter))) flags|=SET_FILTER; - set_win->set->flags=flags; + set_win->set->flags = last_display_settings_flags = flags; store_settings(set_win->set); save_settings(); } @@ -3361,36 +3364,31 @@ void filer_save_settings(FilerWindow *fwin) GtkWidget *path, *lbl; gint x, y; - Settings *set=settings_new(fwin->sym_path); + Settings *old, *set=settings_new(fwin->sym_path); + + old = g_hash_table_lookup(settings_table, fwin->sym_path); + set->flags = old ? old->flags : last_display_settings_flags; gtk_window_get_position(GTK_WINDOW(fwin->window),&x, &y); - set->flags|=SET_POSITION; set->x=x; set->y=y; gtk_window_get_size(GTK_WINDOW(fwin->window),&x, &y); - set->flags|=SET_SIZE; set->width=x; set->height=y; - set->flags|=SET_HIDDEN; set->show_hidden=fwin->show_hidden; - set->flags|=SET_STYLE; set->display_style=fwin->display_style; - set->flags|=SET_SORT; set->sort_type=fwin->sort_type; set->sort_order=fwin->sort_order; - set->flags|=SET_DETAILS; set->view_type=fwin->view_type; set->details_type=fwin->details_type; - set->flags|=SET_THUMBS; set->show_thumbs=fwin->show_thumbs; - set->flags|=SET_FILTER; set->filter_type=fwin->filter; if(fwin->filter_string) set->filter=g_strdup(fwin->filter_string); -- 2.11.4.GIT