diff options
Diffstat (limited to 'editor/dconf-view.vala')
-rw-r--r-- | editor/dconf-view.vala | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/editor/dconf-view.vala b/editor/dconf-view.vala index 1725af1..2c57385 100644 --- a/editor/dconf-view.vala +++ b/editor/dconf-view.vala @@ -13,6 +13,22 @@ private class KeyValueRenderer: Gtk.CellRenderer set { _key = value; + + if (key.has_schema && key.schema.choices != null) + { + combo_renderer.text = key.value.print(false); + var model = new Gtk.ListStore(2, typeof(string), typeof(string)); + foreach (var choice in key.schema.choices) + { + Gtk.TreeIter iter; + model.append(out iter); + model.set(iter, 0, choice.name, 1, choice.value.print(false), -1); + } + combo_renderer.model = model; + mode = Gtk.CellRendererMode.EDITABLE; + return; + } + switch (key.type_string) { case "<enum>": @@ -39,7 +55,7 @@ private class KeyValueRenderer: Gtk.CellRenderer spin_renderer.text = key.value.print(false); var v = get_variant_as_double(key.value); double min = 0.0, max = 0.0; - if (key.schema != null && key.schema.range != null) + if (key.has_schema && key.schema.range != null) { min = get_variant_as_double(key.schema.range.min); max = get_variant_as_double(key.schema.range.max); @@ -118,6 +134,9 @@ private class KeyValueRenderer: Gtk.CellRenderer set {} get { + if (key.has_schema && key.schema.choices != null) + return combo_renderer; + switch (key.type_string) { case "<enum>": |