diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2012-10-01 09:53:40 +1300 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2012-10-01 09:53:40 +1300 |
commit | 9d3f6ae7c732a82ff1f6084b43425691cdde9d48 (patch) | |
tree | da600c176dc5d8171ab7e591c0a9203b2b812be4 /editor | |
parent | 8456aded28a8f6fdc401503225c2d844d00197dc (diff) | |
download | dconf-9d3f6ae7c732a82ff1f6084b43425691cdde9d48.tar.gz |
editor: Make search match on directories
https://bugzilla.gnome.org/show_bug.cgi?id=677653
Diffstat (limited to 'editor')
-rw-r--r-- | editor/dconf-editor.vala | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/editor/dconf-editor.vala b/editor/dconf-editor.vala index 55745f0..5a7cf8f 100644 --- a/editor/dconf-editor.vala +++ b/editor/dconf-editor.vala @@ -280,6 +280,7 @@ class ConfigurationEditor : Gtk.Application { search_label.set_text(""); + /* Get the current position in the tree */ Gtk.TreeIter iter; var key_iter = Gtk.TreeIter(); var have_key_iter = false; @@ -297,17 +298,31 @@ class ConfigurationEditor : Gtk.Application else if (!model.get_iter_first(out iter)) return; + var on_first_directory = true; do { + /* Select next directory that matches */ var dir = model.get_directory(iter); if (!have_key_iter) + { have_key_iter = dir.key_model.get_iter_first(out key_iter); + if (!on_first_directory && dir.name.index_of(search_entry.text) >= 0) + { + dir_tree_view.expand_to_path(model.get_path(iter)); + dir_tree_view.get_selection().select_iter(iter); + dir_tree_view.scroll_to_cell(model.get_path(iter), null, false, 0, 0); + return; + } + } + on_first_directory = false; + + /* Select next key that matches */ if (have_key_iter) { do { var key = dir.key_model.get_key(key_iter); - if (key.name.index_of (search_entry.text) >= 0) + if (key.name.index_of(search_entry.text) >= 0) { dir_tree_view.expand_to_path(model.get_path(iter)); dir_tree_view.get_selection().select_iter(iter); |