diff options
author | Stefano Facchini <stefano.facchini@gmail.com> | 2020-06-20 23:14:57 +0200 |
---|---|---|
committer | Stefano Facchini <stefano.facchini@gmail.com> | 2020-06-30 16:01:23 +0200 |
commit | 48cda55733519d2d09a751d22a28015d0379ed55 (patch) | |
tree | ac25d93e5dd0de595c6f26ebe5f4310ddef32d92 /src | |
parent | cdd7b8aa26f0c00e5bf7a52b1dfce84c6332b553 (diff) | |
download | baobab-48cda55733519d2d09a751d22a28015d0379ed55.tar.gz |
Bring sorting back
Diffstat (limited to 'src')
-rw-r--r-- | src/baobab-window.vala | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/src/baobab-window.vala b/src/baobab-window.vala index 41ab8a3..d46e8fe 100644 --- a/src/baobab-window.vala +++ b/src/baobab-window.vala @@ -391,17 +391,34 @@ namespace Baobab { } bool get_selected_iter (out Gtk.TreeIter iter) { - Gtk.TreeIter filter_iter; + Gtk.TreeIter wrapper_iter; var selection = treeview.get_selection (); - var result = selection.get_selected (null, out filter_iter); + var result = selection.get_selected (null, out wrapper_iter); - var filter = (Gtk.TreeModelFilter) treeview.model; - filter.convert_iter_to_child_iter (out iter, filter_iter); + convert_iter_to_child_iter (out iter, wrapper_iter); return result; } + void convert_iter_to_child_iter (out Gtk.TreeIter child_iter, Gtk.TreeIter iter) { + Gtk.TreeIter filter_iter; + + var sort = (Gtk.TreeModelSort) treeview.model; + sort.convert_iter_to_child_iter (out filter_iter, iter); + + var filter = (Gtk.TreeModelFilter) sort.model; + filter.convert_iter_to_child_iter (out child_iter, filter_iter); + } + + Gtk.TreePath convert_path_to_child_path (Gtk.TreePath path) { + var sort = (Gtk.TreeModelSort) treeview.model; + var filter_path = sort.convert_path_to_child_path (path); + + var filter = (Gtk.TreeModelFilter) sort.model; + return filter.convert_path_to_child_path (filter_path); + } + void setup_treeview () { treeview.button_press_event.connect ((event) => { if (event.triggers_context_menu ()) { @@ -440,9 +457,8 @@ namespace Baobab { } }); - treeview.row_activated.connect ((filter_path, column) => { - var filter = (Gtk.TreeModelFilter) treeview.model; - var path = filter.convert_path_to_child_path (filter_path); + treeview.row_activated.connect ((wrapper_path, column) => { + var path = convert_path_to_child_path (wrapper_path); reroot_treeview (path, true); }); } @@ -459,7 +475,8 @@ namespace Baobab { folder_display.path = path; pathbar.path = path; - treeview.model = new Gtk.TreeModelFilter (active_location.scanner, path); + var filter = new Gtk.TreeModelFilter (active_location.scanner, path); + treeview.model = new Gtk.TreeModelSort.with_model (filter); if (select_first) { treeview.set_cursor (new Gtk.TreePath.first (), null, false); |