diff --git a/data/org.gnome.nautilus.gschema.xml b/data/org.gnome.nautilus.gschema.xml index e32cac3e36d722d346abd8594fd301a958a4c323..cbc3290989c8c6c57dfc6dd58001911f856be44d 100644 --- a/data/org.gnome.nautilus.gschema.xml +++ b/data/org.gnome.nautilus.gschema.xml @@ -168,6 +168,11 @@ Whether to show hidden files This key is deprecated and ignored. The “show-hidden” key from “org.gtk.Settings.FileChooser” is now used instead. + + false + Whether GTK 4 settings migration happened + Whether settings shared with GtkFileChooser have been migrated from their GTK 3 key to the GTK 4 ones. + 'list-view' What viewer should be used when searching diff --git a/src/nautilus-application.c b/src/nautilus-application.c index c3e5881034bb6ff7ca6b3edc887b72710e9e4dfc..5d8d750b975581b905673aa6393de60447c4291c 100644 --- a/src/nautilus-application.c +++ b/src/nautilus-application.c @@ -1133,6 +1133,38 @@ icon_theme_changed_callback (GtkIconTheme *icon_theme, emit_change_signals_for_all_files_in_all_directories (); } +static void +maybe_migrate_gtk_filechooser_preferences (void) +{ + if (!g_settings_get_boolean (nautilus_preferences, NAUTILUS_PREFERENCES_MIGRATED_GTK_SETTINGS)) + { + g_autoptr (GSettingsSchema) schema = NULL; + + /* We don't depend on GTK 3. Check whether its schema is installed. */ + schema = g_settings_schema_source_lookup (g_settings_schema_source_get_default (), + "org.gtk.Settings.FileChooser", + FALSE); + if (schema != NULL) + { + g_autoptr (GSettings) gtk3_settings = NULL; + + gtk3_settings = g_settings_new_with_path ("org.gtk.Settings.FileChooser", + "/org/gtk/settings/file-chooser/"); + g_settings_set_boolean (gtk_filechooser_preferences, + NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST, + g_settings_get_boolean (gtk3_settings, + NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST)); + g_settings_set_boolean (gtk_filechooser_preferences, + NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES, + g_settings_get_boolean (gtk3_settings, + NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES)); + } + g_settings_set_boolean (nautilus_preferences, + NAUTILUS_PREFERENCES_MIGRATED_GTK_SETTINGS, + TRUE); + } +} + void nautilus_application_startup_common (NautilusApplication *self) { @@ -1173,6 +1205,7 @@ nautilus_application_startup_common (NautilusApplication *self) if (g_strcmp0 (g_getenv ("RUNNING_TESTS"), "TRUE") != 0) { + maybe_migrate_gtk_filechooser_preferences (); nautilus_tag_manager_maybe_migrate_tracker2_data (priv->tag_manager); } diff --git a/src/nautilus-global-preferences.c b/src/nautilus-global-preferences.c index fd6d53e08194d359ff750f8a1825e9751c1341e9..6bc991908f2d767661987cab38997906b7e6aab7 100644 --- a/src/nautilus-global-preferences.c +++ b/src/nautilus-global-preferences.c @@ -59,8 +59,8 @@ nautilus_global_preferences_init (void) nautilus_icon_view_preferences = g_settings_new ("org.gnome.nautilus.icon-view"); nautilus_list_view_preferences = g_settings_new ("org.gnome.nautilus.list-view"); /* Some settings such as show hidden files are shared between Nautilus and GTK file chooser */ - gtk_filechooser_preferences = g_settings_new_with_path ("org.gtk.Settings.FileChooser", - "/org/gtk/settings/file-chooser/"); + gtk_filechooser_preferences = g_settings_new_with_path ("org.gtk.gtk4.Settings.FileChooser", + "/org/gtk/gtk4/settings/file-chooser/"); gnome_lockdown_preferences = g_settings_new ("org.gnome.desktop.lockdown"); gnome_interface_preferences = g_settings_new ("org.gnome.desktop.interface"); gnome_privacy_preferences = g_settings_new ("org.gnome.desktop.privacy"); diff --git a/src/nautilus-global-preferences.h b/src/nautilus-global-preferences.h index 5168f383fb06f4fa52094c2d6c63996c235019af..5a73717b3023f3dd90fdf1a80ba0f21c7bec3aeb 100644 --- a/src/nautilus-global-preferences.h +++ b/src/nautilus-global-preferences.h @@ -127,6 +127,9 @@ typedef enum /* Full Text Search enabled */ #define NAUTILUS_PREFERENCES_FTS_ENABLED "fts-enabled" +/* Gtk settings migration happened */ +#define NAUTILUS_PREFERENCES_MIGRATED_GTK_SETTINGS "migrated-gtk-settings" + void nautilus_global_preferences_init (void); extern GSettings *nautilus_preferences;