[dconf-editor] Make get_children() ask for a path.
- From: Arnaud Bonatti <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dconf-editor] Make get_children() ask for a path.
- Date: Fri, 19 Jan 2018 00:51:08 +0000 (UTC)
commit d4161fe106a66976fce53a6809a67fc23f6016e6
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Fri Jan 19 01:49:59 2018 +0100
Make get_children() ask for a path.
editor/browser-view.vala | 5 +-
editor/dconf-model.vala | 93 +++++++++--------------------------
editor/dconf-window.vala | 41 ++++++----------
editor/modifications-revealer.vala | 5 +-
editor/registry-search.vala | 5 +-
editor/registry-view.vala | 2 +-
6 files changed, 47 insertions(+), 104 deletions(-)
---
diff --git a/editor/browser-view.vala b/editor/browser-view.vala
index 3c82546..1facfca 100644
--- a/editor/browser-view.vala
+++ b/editor/browser-view.vala
@@ -268,9 +268,8 @@ class BrowserView : Grid
if (current_view_is_browse_view ())
{
- Directory? fresh_dir = (Directory?) model.get_directory (path);
- GLib.ListStore? fresh_key_model = model.get_children (fresh_dir);
- if (fresh_key_model != null && !browse_view.check_reload ((!) fresh_dir, (!) fresh_key_model))
+ GLib.ListStore? fresh_key_model = model.get_children (path);
+ if (fresh_key_model != null && !browse_view.check_reload ((!) fresh_key_model))
return false;
}
else if (current_view_is_properties_view ())
diff --git a/editor/dconf-model.vala b/editor/dconf-model.vala
index 4c6cfe3..53f60ba 100644
--- a/editor/dconf-model.vala
+++ b/editor/dconf-model.vala
@@ -84,54 +84,6 @@ public class SettingsModel : Object
}
/*\
- * * Content lookup
- \*/
-
- private enum LookupResultType
- {
- KEY,
- FOLDER,
- NOT_FOUND
- }
-
- private LookupResultType lookup (string path, out GLib.ListStore? key_model, out bool multiple_schemas)
- {
- key_model = null;
- if (is_key_path (path))
- {
- string name = get_name (path);
- string parent_path = get_parent_path (path);
- GLib.ListStore? parent_key_model = null;
- switch (lookup (parent_path, out parent_key_model, out multiple_schemas))
- {
- case LookupResultType.FOLDER:
- Key? key = get_key_from_path_and_name ((!) parent_key_model, name);
- if (key != null)
- {
- key_model = new ListStore (typeof (SettingObject));
- ((!) key_model).append ((!) key);
- return LookupResultType.KEY;
- }
- return LookupResultType.NOT_FOUND;
- default:
- return LookupResultType.NOT_FOUND;
- }
- }
- else
- {
- GLib.ListStore _key_model = new GLib.ListStore (typeof (SettingObject));
- lookup_gsettings (path, _key_model, out multiple_schemas);
- create_dconf_keys (path, _key_model);
- if (_key_model.get_n_items () > 0)
- {
- key_model = _key_model;
- return LookupResultType.FOLDER;
- }
- return LookupResultType.NOT_FOUND;
- }
- }
-
- /*\
* * GSettings content creation
\*/
@@ -200,19 +152,22 @@ public class SettingsModel : Object
return dir;
}
- public GLib.ListStore? get_children (Directory? parent)
+ public GLib.ListStore? get_children (string folder_path)
{
- if (parent == null)
+ Directory? dir = get_directory (folder_path);
+ if (dir == null)
return null;
- GLib.ListStore? key_model = null;
+
+ GLib.ListStore key_model = new GLib.ListStore (typeof (SettingObject));
bool multiple_schemas;
- switch (lookup (((!) parent).full_name, out key_model, out multiple_schemas))
- {
- case LookupResultType.FOLDER:
+
+ lookup_gsettings (folder_path, key_model, out multiple_schemas);
+ create_dconf_keys (folder_path, key_model);
+
+ if (key_model.get_n_items () > 0)
return key_model;
- default:
+ else
return null;
- }
}
/*\
@@ -298,23 +253,23 @@ public class SettingsModel : Object
public SettingObject? get_object (string path, bool strict = true)
{
if (!is_key_path (path))
- return get_directory (path);
- else if (strict)
- return get_key (path);
- else
- {
- GLib.ListStore? key_model = get_children (get_directory (get_parent_path (path)));
- string name = get_name (path);
- SettingObject? key = get_key_from_path_and_name (key_model, name);
- if (key != null || strict)
- return key;
- return get_folder_from_path_and_name (key_model, name);
- }
+ return (SettingObject?) get_directory (path);
+
+ if (strict)
+ return (SettingObject?) get_key (path);
+
+ GLib.ListStore? key_model = get_children (get_parent_path (path));
+ string name = get_name (path);
+ SettingObject? key = get_key_from_path_and_name (key_model, name);
+ if (key != null)
+ return key;
+
+ return get_folder_from_path_and_name (key_model, name);
}
public Key? get_key (string path)
{
- GLib.ListStore? key_model = get_children (get_directory (get_parent_path (path)));
+ GLib.ListStore? key_model = get_children (get_parent_path (path));
return get_key_from_path_and_name (key_model, get_name (path));
}
diff --git a/editor/dconf-window.vala b/editor/dconf-window.vala
index 4519d0d..dc05e8b 100644
--- a/editor/dconf-window.vala
+++ b/editor/dconf-window.vala
@@ -426,7 +426,7 @@ class DConfWindow : ApplicationWindow
private void reset_path (string path, bool recursively)
{
enter_delay_mode ();
- revealer.reset_objects (model.get_children (model.get_directory (path)), recursively);
+ revealer.reset_objects (model.get_children (path), recursively);
}
private void enter_delay_mode (/* SimpleAction action, Variant? path_variant */)
@@ -465,10 +465,19 @@ class DConfWindow : ApplicationWindow
if (not_found)
cannot_find_folder (full_name); // do not place after, full_name is in some cases changed by
set_directory()...
- if (selected_or_empty == "")
- set_directory ((!) found_object, pathbar.get_selected_child (fallback_path));
- else
- set_directory ((!) found_object, selected_or_empty);
+ GLib.ListStore? key_model = model.get_children (((!) found_object).full_name);
+ if (key_model != null)
+ {
+ browser_view.prepare_browse_view ((!) key_model,
+ current_path.has_prefix (((!) found_object).full_name),
+ ((!) found_object).warning_multiple_schemas);
+ update_current_path (((!) found_object).full_name);
+
+ if (selected_or_empty == "")
+ browser_view.select_row (pathbar.get_selected_child (fallback_path));
+ else
+ browser_view.select_row (selected_or_empty);
+ }
search_bar.search_mode_enabled = false; // do last to avoid flickering RegistryView before
PropertiesView when selecting a search result
}
@@ -497,30 +506,10 @@ class DConfWindow : ApplicationWindow
search_bar.search_mode_enabled = false; // do last to avoid flickering RegistryView before
PropertiesView when selecting a search result
}
- private void set_directory (Directory directory, string selected_or_empty)
- {
- GLib.ListStore? key_model = model.get_children (directory);
- if (key_model == null)
- return;
- browser_view.prepare_browse_view ((!) key_model, current_path.has_prefix (directory.full_name),
directory.warning_multiple_schemas);
- update_current_path (directory.full_name);
-
- browser_view.select_row (selected_or_empty);
- }
-
private void reload_view ()
{
if (browser_view.current_view_is_browse_view ())
- {
- Directory? directory = model.get_directory (current_path);
- if (directory == null)
- request_folder_path (current_path); // rely on fallback detection
- else
- {
- string saved_selection = browser_view.get_selected_row_name ();
- set_directory ((!) directory, saved_selection);
- }
- }
+ request_folder_path (current_path, browser_view.get_selected_row_name ());
else if (browser_view.current_view_is_properties_view ())
request_object_path (current_path, false);
else if (browser_view.current_view_is_search_results_view ())
diff --git a/editor/modifications-revealer.vala b/editor/modifications-revealer.vala
index 7ae5824..de88cd4 100644
--- a/editor/modifications-revealer.vala
+++ b/editor/modifications-revealer.vala
@@ -83,8 +83,9 @@ class ModificationsRevealer : Revealer
SettingObject setting_object = (SettingObject) ((!) object);
if (setting_object is Directory)
{
- if (recursively) {
- GLib.ListStore? children = model.get_children ((Directory) setting_object);
+ if (recursively)
+ {
+ GLib.ListStore? children = model.get_children (setting_object.full_name);
if (children != null)
_reset_objects ((!) children, true);
}
diff --git a/editor/registry-search.vala b/editor/registry-search.vala
index dc93b7f..d9b391b 100644
--- a/editor/registry-search.vala
+++ b/editor/registry-search.vala
@@ -464,8 +464,7 @@ class RegistrySearch : Grid, BrowsableView
if (!SettingsModel.is_key_path (current_path))
{
- Directory? local = model.get_directory (current_path);
- GLib.ListStore? key_model = model.get_children (local);
+ GLib.ListStore? key_model = model.get_children (current_path);
for (uint i = 0; i < ((!) key_model).get_n_items (); i++)
{
SettingObject item = (SettingObject) ((!) key_model).get_item (i);
@@ -549,7 +548,7 @@ class RegistrySearch : Grid, BrowsableView
Directory next = (!) search_nodes.pop_head ();
bool local_again = next.full_name == current_path;
- GLib.ListStore? next_key_model = model.get_children (next);
+ GLib.ListStore? next_key_model = model.get_children (next.full_name);
if (next_key_model == null)
return true;
diff --git a/editor/registry-view.vala b/editor/registry-view.vala
index a68a803..611e675 100644
--- a/editor/registry-view.vala
+++ b/editor/registry-view.vala
@@ -62,7 +62,7 @@ class RegistryView : Grid, BrowsableView
key_list_box.bind_model (key_model, new_list_box_row);
}
- public bool check_reload (Directory fresh_dir, GLib.ListStore fresh_key_model)
+ public bool check_reload (GLib.ListStore fresh_key_model)
{
if (key_model == null) // should not happen?
return true;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]