[dconf-editor] Do not rely on ordering when check_reload folder
- From: Arnaud Bonatti <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dconf-editor] Do not rely on ordering when check_reload folder
- Date: Tue, 19 Dec 2017 22:47:55 +0000 (UTC)
commit 62166875db0f896621b28ef12865b54ab82ee5c4
Author: Davi da Silva Böger <dsboger gmail com>
Date: Tue Dec 19 14:26:46 2017 -0200
Do not rely on ordering when check_reload folder
It bugs when changing sorting options multiple times before refreshing.
See https://bugzilla.gnome.org/show_bug.cgi?id=791775.
editor/browser-view.vala | 8 ++------
editor/registry-view.vala | 21 ++++++++++++++++-----
2 files changed, 18 insertions(+), 11 deletions(-)
---
diff --git a/editor/browser-view.vala b/editor/browser-view.vala
index 573029f..f337a33 100644
--- a/editor/browser-view.vala
+++ b/editor/browser-view.vala
@@ -330,12 +330,8 @@ class BrowserView : Grid, PathElement
{
Directory? fresh_dir = (Directory?) model.get_directory (current_path);
GLib.ListStore? fresh_key_model = model.get_children (fresh_dir);
- if (fresh_key_model != null)
- {
- sorting_options.sort_key_model ((!) fresh_key_model); // RegistryView.check_reload assumes
the same order as the current view for faster comparison
- if (!browse_view.check_reload ((!) fresh_dir, (!) fresh_key_model))
- return;
- }
+ if (fresh_key_model != null && !browse_view.check_reload ((!) fresh_dir, (!) fresh_key_model))
+ return;
} // search_results_view always reloads
if (internal_changes)
diff --git a/editor/registry-view.vala b/editor/registry-view.vala
index 72abaaf..d5808af 100644
--- a/editor/registry-view.vala
+++ b/editor/registry-view.vala
@@ -87,13 +87,24 @@ class RegistryView : Grid, PathElement, BrowsableView
for (uint i = 0; i < ((!) key_model).get_n_items (); i++)
{
SettingObject setting_object = (SettingObject) ((!) key_model).get_item (i);
- SettingObject fresh_setting_object = (SettingObject) fresh_key_model.get_item (i);
- if (setting_object.get_type () != fresh_setting_object.get_type ())
- return true;
- if (setting_object.name != fresh_setting_object.name)
+ bool found = false;
+ for (uint j = 0; j < ((!) fresh_key_model).get_n_items (); j++)
+ {
+ SettingObject fresh_setting_object = (SettingObject) fresh_key_model.get_item (j);
+ if (setting_object.get_type () != fresh_setting_object.get_type ())
+ continue;
+ if (setting_object.name != fresh_setting_object.name)
+ continue;
+ // TODO compare other visible info (i.e. key summary and value)
+ found = true;
+ fresh_key_model.remove (j);
+ break;
+ }
+ if (!found)
return true;
- // TODO compare other visible info (i.e. key summary and value)
}
+ if (((!) fresh_key_model).get_n_items () > 0)
+ return true;
return false;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]