[dconf] editor: Make search match on directories
- From: Robert Ancell <rancell src gnome org>
 
- To: commits-list gnome org
 
- Cc: 
 
- Subject: [dconf] editor: Make search match on directories
 
- Date: Sun, 30 Sep 2012 20:53:59 +0000 (UTC)
 
commit 9d3f6ae7c732a82ff1f6084b43425691cdde9d48
Author: Robert Ancell <robert ancell canonical com>
Date:   Mon Oct 1 09:53:40 2012 +1300
    editor: Make search match on directories
    
    https://bugzilla.gnome.org/show_bug.cgi?id=677653
 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);
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]