Skip to content

Commit e6b712a

Browse files
authored
Add sort-directories-first setting (#2740)
1 parent 138b905 commit e6b712a

File tree

6 files changed

+15
-31
lines changed

6 files changed

+15
-31
lines changed

data/schemas/io.elementary.files.gschema.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@
6060
<summary>Single click selects folders</summary>
6161
<description>If set to true, single clicking a folder will select it instead of opening it</description>
6262
</key>
63+
<key type="b" name="sort-directories-first">
64+
<default>true</default>
65+
<summary>Show folders first</summary>
66+
<description>If set to true, then folders are shown before files in the list.</description>
67+
</key>
6368
<key name="date-format" enum="dateformatmode">
6469
<default>'informal'</default>
6570
<summary>Date Format</summary>

libcore/Preferences.vala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ namespace Files {
3030
public bool show_local_thumbnails {set; get; default = true;}
3131
public bool show_file_preview {set; get; default = true;}
3232
public bool confirm_trash {set; get; default = true;}
33-
public bool sort_directories_first { get; set; default = true; }
3433
public bool remember_history { get; set; default = true; }
3534

3635
public DateFormatMode date_format {set; get; default = DateFormatMode.ISO;}

src/Application.vala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,5 @@ public class Files.Application : Gtk.Application {
279279
Files.Preferences.get_default (), "clock-format", GLib.SettingsBindFlags.GET);
280280
gnome_privacy_settings.bind ("remember-recent-files",
281281
Files.Preferences.get_default (), "remember-history", GLib.SettingsBindFlags.GET);
282-
gtk_file_chooser_settings.bind ("sort-directories-first",
283-
prefs, "sort-directories-first", GLib.SettingsBindFlags.DEFAULT);
284282
}
285283
}

src/View/AbstractDirectoryView.vala

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ namespace Files {
7676
{"new", on_background_action_new, "s"},
7777
{"create-from", on_background_action_create_from, "s"},
7878
{"sort-by", on_background_action_sort_by_changed, "s", "'name'"},
79-
{"reverse", on_background_action_reverse_changed, null, "false"},
80-
{"folders-first", on_background_action_folders_first_changed, null, "true"}
79+
{"reverse", on_background_action_reverse_changed, null, "false"}
8180
};
8281

8382
const GLib.ActionEntry [] COMMON_ENTRIES = {
@@ -456,12 +455,13 @@ namespace Files {
456455
prefs.notify["show-hidden-files"].connect (on_show_hidden_files_changed);
457456
prefs.notify["show-remote-thumbnails"].connect (on_show_thumbnails_changed);
458457
prefs.notify["show-local-thumbnails"].connect (on_show_thumbnails_changed);
459-
prefs.notify["sort-directories-first"].connect (on_sort_directories_first_changed);
460458
prefs.notify["date-format"].connect (on_dateformat_changed);
461459

462460
app_settings.bind ("singleclick-select", this, "singleclick_select", SettingsBindFlags.DEFAULT);
463461

464-
model.set_should_sort_directories_first (Files.Preferences.get_default ().sort_directories_first);
462+
app_settings.changed["sort-directories-first"].connect (on_sort_directories_first_changed);
463+
464+
model.set_should_sort_directories_first (app_settings.get_boolean ("sort-directories-first"));
465465
model.row_deleted.connect (on_row_deleted);
466466
/* Sort order of model is set after loading */
467467
model.sort_column_changed.connect (on_sort_column_changed);
@@ -1236,11 +1236,6 @@ namespace Files {
12361236
set_sort (null, true);
12371237
}
12381238

1239-
private void on_background_action_folders_first_changed (GLib.SimpleAction action, GLib.Variant? val) {
1240-
var prefs = Files.Preferences.get_default ();
1241-
prefs.sort_directories_first = !prefs.sort_directories_first;
1242-
}
1243-
12441239
private void set_sort (string? col_name, bool reverse) {
12451240
int sort_column_id;
12461241
Gtk.SortType sort_order;
@@ -1480,9 +1475,8 @@ namespace Files {
14801475
slot.reload ();
14811476
}
14821477

1483-
private void on_sort_directories_first_changed (GLib.Object prefs, GLib.ParamSpec pspec) {
1484-
var sort_directories_first = ((Files.Preferences) prefs).sort_directories_first;
1485-
model.set_should_sort_directories_first (sort_directories_first);
1478+
private void on_sort_directories_first_changed (Settings settings, string key) {
1479+
model.set_should_sort_directories_first (settings.get_boolean (key));
14861480
}
14871481

14881482
private void directory_hidden_changed (Directory dir, bool show) {
@@ -2343,7 +2337,7 @@ namespace Files {
23432337
reversed_checkitem.action_name = "background.reverse";
23442338

23452339
var folders_first_checkitem = new Gtk.CheckMenuItem.with_label (_("Folders Before Files"));
2346-
folders_first_checkitem.action_name = "background.folders-first";
2340+
folders_first_checkitem.action_name = "win.sort-directories-first";
23472341

23482342
submenu = new Gtk.Menu ();
23492343
submenu.add (name_radioitem);
@@ -2574,8 +2568,6 @@ namespace Files {
25742568
action_set_state (background_actions, "sort-by", val);
25752569
val = new GLib.Variant.boolean (sort_order == Gtk.SortType.DESCENDING);
25762570
action_set_state (background_actions, "reverse", val);
2577-
val = new GLib.Variant.boolean (Files.Preferences.get_default ().sort_directories_first);
2578-
action_set_state (background_actions, "folders-first", val);
25792571
} else {
25802572
warning ("Update menu actions sort: The model is unsorted - this should not happen");
25812573
}

src/View/Widgets/AppMenu.vala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public class Files.AppMenu : Gtk.Popover {
9494
};
9595

9696
var folders_before_files = new Granite.SwitchModelButton (_("Sort Folders before Files")) {
97-
action_name = "win.folders-before-files"
97+
action_name = "win.sort-directories-first"
9898
};
9999

100100
var restore_tabs = new Granite.SwitchModelButton (_("Restore Tabs from Last Time")) {

src/View/Window.vala

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public class Files.View.Window : Hdy.ApplicationWindow {
6666
{"zoom", action_zoom, "s"},
6767
{"view-mode", action_view_mode, "u", "0" },
6868
{"tabhistory-restore", action_tabhistory_restore, "s" },
69-
{"folders-before-files", null, null, "true", change_state_folders_before_files},
7069
{"forward", action_forward, "i"},
7170
{"back", action_back, "i"},
7271
{"focus-sidebar", action_focus_sidebar}
@@ -113,10 +112,11 @@ public class Files.View.Window : Hdy.ApplicationWindow {
113112
var app_settings = new Settings ("io.elementary.files.preferences");
114113
add_action (app_settings.create_action ("restore-tabs"));
115114
add_action (app_settings.create_action ("show-file-preview"));
115+
add_action (app_settings.create_action ("show-hiddenfiles"));
116116
add_action (app_settings.create_action ("show-local-thumbnails"));
117117
add_action (app_settings.create_action ("show-remote-thumbnails"));
118-
add_action (app_settings.create_action ("show-hiddenfiles"));
119118
add_action (app_settings.create_action ("singleclick-select"));
119+
add_action (app_settings.create_action ("sort-directories-first"));
120120

121121
add_action_entries (WIN_ENTRIES, this);
122122
undo_actions_set_insensitive ();
@@ -272,10 +272,6 @@ public class Files.View.Window : Hdy.ApplicationWindow {
272272

273273
add (grid);
274274

275-
/** Apply preferences */
276-
var prefs = Files.Preferences.get_default (); // Bound to settings schema by Application
277-
get_action ("folders-before-files").set_state (prefs.sort_directories_first);
278-
279275
button_forward.slow_press.connect (() => {
280276
get_action_group ("win").activate_action ("forward", new Variant.int32 (1));
281277
});
@@ -1027,12 +1023,6 @@ public class Files.View.Window : Hdy.ApplicationWindow {
10271023
doing_undo_redo = false;
10281024
}
10291025

1030-
public void change_state_folders_before_files (GLib.SimpleAction action) {
1031-
bool state = !action.state.get_boolean ();
1032-
action.set_state (new GLib.Variant.boolean (state));
1033-
Files.Preferences.get_default ().sort_directories_first = state;
1034-
}
1035-
10361026
private void connect_to_server () {
10371027
var dialog = new PF.ConnectServerDialog ((Gtk.Window) this);
10381028
string server_uri = "";

0 commit comments

Comments
 (0)