From ee5324359d24c3ade2ca0b01790a56f39a39f4ef Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 22 Oct 2022 20:12:20 -0400 Subject: [PATCH] filechooser: Save and restore view type With this, the filechooser comes up with the same view (grid or list) that it had the last time you used it. --- gtk/gtkfilechooserprivate.h | 1 + gtk/gtkfilechooserwidget.c | 5 +++++ gtk/org.gtk.gtk4.Settings.FileChooser.gschema.xml | 12 ++++++++++++ 3 files changed, 18 insertions(+) diff --git a/gtk/gtkfilechooserprivate.h b/gtk/gtkfilechooserprivate.h index ac6da257a4..7f3215ff3e 100644 --- a/gtk/gtkfilechooserprivate.h +++ b/gtk/gtkfilechooserprivate.h @@ -46,6 +46,7 @@ G_BEGIN_DECLS #define SETTINGS_KEY_CLOCK_FORMAT "clock-format" #define SETTINGS_KEY_DATE_FORMAT "date-format" #define SETTINGS_KEY_TYPE_FORMAT "type-format" +#define SETTINGS_KEY_VIEW_TYPE "view-type" #define GTK_FILE_CHOOSER_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_FILE_CHOOSER, GtkFileChooserIface)) diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c index 0ed294309f..40e9ceedbb 100644 --- a/gtk/gtkfilechooserwidget.c +++ b/gtk/gtkfilechooserwidget.c @@ -3224,6 +3224,7 @@ settings_load (GtkFileChooserWidget *impl) gboolean sort_directories_first; DateFormat date_format; TypeFormat type_format; + ViewType view_type; int sort_column; GtkSortType sort_order; StartupMode startup_mode; @@ -3242,6 +3243,7 @@ settings_load (GtkFileChooserWidget *impl) sort_directories_first = g_settings_get_boolean (settings, SETTINGS_KEY_SORT_DIRECTORIES_FIRST); date_format = g_settings_get_enum (settings, SETTINGS_KEY_DATE_FORMAT); type_format = g_settings_get_enum (settings, SETTINGS_KEY_TYPE_FORMAT); + view_type = g_settings_get_enum (settings, SETTINGS_KEY_VIEW_TYPE); set_show_hidden (impl, show_hidden); @@ -3258,6 +3260,8 @@ settings_load (GtkFileChooserWidget *impl) impl->clock_format = g_settings_get_enum (settings, "clock-format"); impl->type_format = type_format; + set_view_type (impl, view_type); + /* We don't call set_sort_column() here as the models may not have been * created yet. The individual functions that create and set the models will * call set_sort_column() themselves. @@ -3294,6 +3298,7 @@ settings_save (GtkFileChooserWidget *impl) gtk_paned_get_position (GTK_PANED (impl->browse_widgets_hpaned))); g_settings_set_enum (settings, SETTINGS_KEY_DATE_FORMAT, impl->show_time ? DATE_FORMAT_WITH_TIME : DATE_FORMAT_REGULAR); g_settings_set_enum (settings, SETTINGS_KEY_TYPE_FORMAT, impl->type_format); + g_settings_set_enum (settings, SETTINGS_KEY_VIEW_TYPE, impl->view_type); /* Now apply the settings */ g_settings_apply (settings); diff --git a/gtk/org.gtk.gtk4.Settings.FileChooser.gschema.xml b/gtk/org.gtk.gtk4.Settings.FileChooser.gschema.xml index d70fab035d..054a256d1a 100644 --- a/gtk/org.gtk.gtk4.Settings.FileChooser.gschema.xml +++ b/gtk/org.gtk.gtk4.Settings.FileChooser.gschema.xml @@ -55,6 +55,11 @@ + + + + + 'path-bar' @@ -169,6 +174,13 @@ 'category' -> 'Video' + + 'list' + View type + + Whether the files are shown in a list or in a grid. + + -- 2.30.2