[dconf-editor] Rework theming.
- From: Arnaud Bonatti <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dconf-editor] Rework theming.
- Date: Thu, 28 Jul 2016 14:34:34 +0000 (UTC)
commit 2957b5e5c6ea7507f76040fa1a15d36122305079
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Thu Jul 28 16:34:25 2016 +0200
Rework theming.
editor/bookmarks.ui | 3 +
editor/ca.desrt.dconf-editor.gschema.xml | 14 +++-
editor/dconf-editor.css | 134 +++++++++++++++++------------
editor/dconf-window.vala | 37 +++++++--
editor/registry-view.ui | 2 +-
5 files changed, 124 insertions(+), 66 deletions(-)
---
diff --git a/editor/bookmarks.ui b/editor/bookmarks.ui
index cb96810..dbf075c 100644
--- a/editor/bookmarks.ui
+++ b/editor/bookmarks.ui
@@ -4,6 +4,9 @@
<object class="GtkPopover" id="bookmarks_popover">
<property name="width-request">350</property>
<property name="height-request">300</property>
+ <style>
+ <class name="bookmarks"/>
+ </style>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
diff --git a/editor/ca.desrt.dconf-editor.gschema.xml b/editor/ca.desrt.dconf-editor.gschema.xml
index 0b42363..f9c8d02 100644
--- a/editor/ca.desrt.dconf-editor.gschema.xml
+++ b/editor/ca.desrt.dconf-editor.gschema.xml
@@ -2,7 +2,7 @@
<schemalist gettext-domain='dconf'>
<enum id="ca.desrt.dconf-editor.Themes">
<value value="0" nick="three-twenty-two"/>
- <value value="1" nick="small-rows"/>
+ <value value="1" nick="non-symbolic-keys-list"/>
</enum>
<enum id="ca.desrt.dconf-editor.Behaviour">
<value value="0" nick="unsafe"/>
@@ -48,10 +48,20 @@
<summary>Show initial warning</summary>
<description>If 'true', Dconf Editor opens a popup when launched reminding the user to be
careful.</description>
</key>
+ <key name="small-keys-list-rows" type="b">
+ <default>false</default>
+ <summary>A flag to enable small rows for keys list</summary>
+ <description>If 'true', the keys list use smaller rows.</description>
+ </key>
+ <key name="small-bookmarks-rows" type="b">
+ <default>false</default>
+ <summary>A flag to enable small rows for bookmarks list</summary>
+ <description>If 'true', the bookmarks list use smaller rows.</description>
+ </key>
<key name="theme" enum="ca.desrt.dconf-editor.Themes">
<default>'three-twenty-two'</default>
<summary>The theme of the navigation list</summary>
- <description>The themes are defined by the application, you cannot add one. Two themes are available
for now: 'three-twenty-two' that will remain as close as possible to the default theme of the 3.22 release,
and 'small-rows' that tries to minimize the rows height.</description>
+ <description>The themes are defined by the application, you cannot add one. The theme
'three-twenty-two' will remain as close as possible to the default theme of the 3.22 release.</description>
</key>
<key name="behaviour" enum="ca.desrt.dconf-editor.Behaviour">
<default>'always-confirm-implicit'</default>
diff --git a/editor/dconf-editor.css b/editor/dconf-editor.css
index 7f46a37..2767c15 100644
--- a/editor/dconf-editor.css
+++ b/editor/dconf-editor.css
@@ -25,81 +25,103 @@ window > popover.menu {
}
/*\
-* * rows height and icon
+* * lists rows height and icon
\*/
/* row height */
-.dconf-list > row {
- transition:min-height 0.3s;
-}
- .dconf-list > row { min-height:2.6rem; }
-.small-rows .dconf-list > row { min-height:1.3rem; }
+ .keys-list > row { transition:min-height 0.3s; } /*
not for .bookmarks, as the transition will start at the popover opening */
+
+ .keys-list > row,
+ .bookmarks list > row { min-height:2.6rem; }
+ .small-keys-list-rows .keys-list > row,
+ .small-bookmarks-rows .bookmarks list > row { min-height:1.3rem; }
+
+/* bookmarks */
+ .small-bookmarks-rows .bookmarks list > row > grid > button.circular.flat {
+ min-height:0;
+ padding-bottom:1px;
+ padding-top:1px;
+ margin-top:-2px;
+ margin-bottom:-2px;
+ }
/* folder icon */
-.dconf-list > row > .folder > grid {
- background-image:-gtk-icontheme("folder-symbolic");
- background-repeat:no-repeat;
+ .keys-list > row > .folder > grid {
+ background-repeat:no-repeat;
+ transition:background-position 0.3s,
+ background-size 0.3s,
+ padding-left 0.3s,
+ padding-right 0.3s; /* warning: ltr/rtl */
+ }
- transition:background-position 0.3s,
- background-size 0.3s,
- padding-left 0.3s,
- padding-right 0.3s; /* warning: ltr/rtl */
-}
+ .keys-list > row > .folder > grid {
background-image:-gtk-icontheme("folder-symbolic"); }
+ .keys-list > row:active > .folder > grid {
background-image:-gtk-icontheme("folder-open-symbolic"); }
-.dconf-list > row:active > .folder > grid {
- background-image:-gtk-icontheme("folder-open-symbolic");
-}
+ .non-symbolic .keys-list > row > .folder > grid {
background-image:-gtk-icontheme("folder"); }
+ .non-symbolic .keys-list > row:active > .folder > grid {
background-image:-gtk-icontheme("folder-open"); }
-/* visual padding: 0.75rem */
- .dconf-list:dir(ltr) > row > .folder > grid { background-position:0.75rem
center; }
- .dconf-list:dir(rtl) > row > .folder > grid { background-position:calc(100% -
0.75rem) center; }
+/* visual padding */
+ .keys-list:dir(ltr) > row > .key > grid { padding-left:
10px; } /* looks cool */
+ .keys-list:dir(rtl) > row > .key > grid { padding-right:
10px; }
-/* icon sizing */
- .dconf-list > row > .folder > grid { background-size:1.5rem; }
- .small-rows .dconf-list > row > .folder > grid { background-size:0.75rem; }
+ .keys-list:dir(ltr) > row > .folder > grid {
background-position: 0.75rem center; }
+ .keys-list:dir(rtl) > row > .folder > grid {
background-position:calc(100% - 0.75rem) center; }
-/* technical padding: (2 * visual padding) + icon size */
- .dconf-list:dir(ltr) > row > .key > grid { padding-left: 10px; } /* looks cool
*/
- .dconf-list:dir(ltr) > row > .folder > grid { padding-left: 3rem; }
- .small-rows .dconf-list:dir(ltr) > row > .folder > grid { padding-left: 2.25rem; }
- .dconf-list:dir(rtl) > row > .key > grid { padding-right: 10px; }
- .dconf-list:dir(rtl) > row > .folder > grid { padding-right: 3rem; }
- .small-rows .dconf-list:dir(rtl) > row > .folder > grid { padding-right: 2.25rem; }
+/* icon sizing */
+ .keys-list > row > .folder > grid {
background-size:1.5rem; }
+ .non-symbolic .keys-list > row > .folder > grid {
background-size:1.75rem; }
+ .small-keys-list-rows .keys-list > row > .folder > grid,
+ .non-symbolic.small-keys-list-rows .keys-list > row > .folder > grid {
background-size:1rem; }
+
+/* technical padding: icon visual padding + icon size + some padding */
+ .keys-list:dir(ltr) > row > .folder > grid { padding-left:
3rem; }
+ .non-symbolic .keys-list:dir(ltr) > row > .folder > grid { padding-left:
3.25rem; }
+ .small-keys-list-rows .keys-list:dir(ltr) > row > .folder > grid,
+ .non-symbolic.small-keys-list-rows .keys-list:dir(ltr) > row > .folder > grid { padding-left:
2.25rem; }
+
+ .keys-list:dir(rtl) > row > .folder > grid { padding-right:
3rem; }
+ .non-symbolic .keys-list:dir(rtl) > row > .folder > grid { padding-right:
3.25rem; }
+ .small-keys-list-rows .keys-list:dir(rtl) > row > .folder > grid,
+ .non-symbolic.small-keys-list-rows .keys-list:dir(rtl) > row > .folder > grid { padding-right:
2.25rem; }
/* technical labels placing */
- .dconf-list > row label.key-name { transition:min-width
0.3s; }
- .dconf-list > row > .key > grid label.key-name { min-width: 222px;
}
- .dconf-list > row > .folder > grid label.key-name { min-width:calc(222px
+ 10px - 3rem); }
- .small-rows .dconf-list > row > .folder > grid label.key-name { min-width:calc(222px
+ 10px - 2.25rem); }
-
-.large-window .dconf-list > row > .key > grid label.key-name { min-width: 250px;
}
-.large-window .dconf-list > row > .folder > grid label.key-name { min-width:calc(250px
+ 10px - 3rem); }
-.large-window.small-rows .dconf-list > row > .folder > grid label.key-name { min-width:calc(250px
+ 10px - 2.25rem); }
-
- .dconf-list > row > .key > grid > grid { min-width:400px;
transition:min-width 0.3s; }
-.large-window .dconf-list > row > .key > grid > grid { min-width:450px; }
-.large-window.xl .dconf-list > row > .key > grid > grid { min-width:474px; }
-.large-window.xl.xxl .dconf-list > row > .key > grid > grid { min-width:500px; }
+ .keys-list > row label.key-name {
transition:min-width 0.3s; }
+ .keys-list > row > .key > grid label.key-name {
min-width: 222px; }
+ .keys-list > row > .folder > grid label.key-name {
min-width:calc(222px + 10px - 3rem); }
+ .non-symbolic .keys-list > row > .folder > grid label.key-name {
min-width:calc(222px + 10px - 3.25rem); }
+ .small-keys-list-rows .keys-list > row > .folder > grid label.key-name,
+ .non-symbolic.small-keys-list-rows .keys-list > row > .folder > grid label.key-name {
min-width:calc(222px + 10px - 2.25rem); }
+
+.large-window .keys-list > row > .key > grid label.key-name {
min-width: 250px; }
+.large-window .keys-list > row > .folder > grid label.key-name {
min-width:calc(250px + 10px - 3rem); }
+.large-window.non-symbolic .keys-list > row > .folder > grid label.key-name {
min-width:calc(250px + 10px - 3.25rem); }
+.large-window .small-keys-list-rows .keys-list > row > .folder > grid label.key-name,
+.large-window.non-symbolic.small-keys-list-rows .keys-list > row > .folder > grid label.key-name {
min-width:calc(250px + 10px - 2.25rem); }
+
+ .keys-list > row > .key > grid > grid {
min-width:400px; transition:min-width 0.3s; }
+.large-window .keys-list > row > .key > grid > grid {
min-width:450px; }
+.large-window.xl .keys-list > row > .key > grid > grid {
min-width:474px; }
+.large-window.xl.xxl .keys-list > row > .key > grid > grid {
min-width:500px; }
/* grid spacing and padding-end */
- .dconf-list:dir(ltr) > row grid > label { padding-right: 0.5em; }
- .dconf-list:dir(rtl) > row grid > label { padding-left: 0.5em; }
+ .keys-list:dir(ltr) > row grid > label { padding-right:
0.5em; }
+ .keys-list:dir(rtl) > row grid > label { padding-left:
0.5em; }
/* pending change icon */
- .dconf-list > row > .key { transition:background-position 0.3s; }
- .dconf-list > row > .key.delayed {
background-image:-gtk-icontheme("document-open-recent-symbolic"); background-repeat:no-repeat; }
- .dconf-list > row > .key.delayed.erase {
background-image:-gtk-icontheme("user-trash-symbolic"); }
+ .keys-list > row > .key {
transition:background-position 0.3s; }
+ .keys-list > row > .key.delayed {
background-image:-gtk-icontheme("document-open-recent-symbolic"); background-repeat:no-repeat; }
+ .keys-list > row > .key.delayed.erase {
background-image:-gtk-icontheme("user-trash-symbolic"); }
- .dconf-list > row > .key.delayed { background-size:16px;
transition:background-size 0.3s; }
- .small-rows .dconf-list > row > .key.delayed { background-size:12px; }
+ .keys-list > row > .key.delayed {
background-size:16px; transition:background-size 0.3s; }
+ .small-keys-list-rows .keys-list > row > .key.delayed {
background-size:12px; }
- .dconf-list:dir(ltr) > row > .key.delayed { padding-right: 28px; }
- .dconf-list:dir(rtl) > row > .key.delayed { padding-left: 28px; }
- .dconf-list:dir(ltr) > row > .key { background-position:calc(100% - 16px)
calc(1.3rem - 8px); }
- .dconf-list:dir(rtl) > row > .key { background-position: 16px
calc(1.3rem - 8px); }
- .small-rows .dconf-list:dir(ltr) > row > .key { background-position:calc(100% - 16px)
calc(0.65rem - 5px); }
- .small-rows .dconf-list:dir(rtl) > row > .key { background-position: 16px
calc(0.65rem - 5px); }
+ .keys-list:dir(ltr) > row > .key.delayed { padding-right:
28px; }
+ .keys-list:dir(rtl) > row > .key.delayed { padding-left:
28px; }
+ .keys-list:dir(ltr) > row > .key {
background-position:calc(100% - 16px) calc(1.3rem - 8px); }
+ .keys-list:dir(rtl) > row > .key {
background-position: 16px calc(1.3rem - 8px); }
+ .small-keys-list-rows .keys-list:dir(ltr) > row > .key {
background-position:calc(100% - 16px) calc(0.65rem - 5px); }
+ .small-keys-list-rows .keys-list:dir(rtl) > row > .key {
background-position: 16px calc(0.65rem - 5px); }
/*\
* * pathbar
diff --git a/editor/dconf-window.vala b/editor/dconf-window.vala
index 37204c8..37120e0 100644
--- a/editor/dconf-window.vala
+++ b/editor/dconf-window.vala
@@ -54,6 +54,8 @@ class DConfWindow : ApplicationWindow
private ulong behaviour_changed_handler = 0;
private ulong theme_changed_handler = 0;
+ private ulong small_keys_list_rows_handler = 0;
+ private ulong small_bookmarks_rows_handler = 0;
public DConfWindow ()
{
@@ -65,16 +67,35 @@ class DConfWindow : ApplicationWindow
if (settings.get_boolean ("window-is-maximized"))
maximize ();
+ StyleContext context = get_style_context ();
theme_changed_handler = settings.changed ["theme"].connect (() => {
string theme = settings.get_string ("theme");
- StyleContext context = get_style_context (); // TODO only check once?
- if (theme == "three-twenty-two" && context.has_class ("small-rows"))
- context.remove_class ("small-rows");
- else if (theme == "small-rows" && !context.has_class ("small-rows"))
- context.add_class ("small-rows");
+ if (theme == "non-symbolic-keys-list")
+ {
+ if (!context.has_class ("non-symbolic")) context.add_class ("non-symbolic");
+ }
+ else if (context.has_class ("non-symbolic")) context.remove_class ("non-symbolic");
+ });
+ small_keys_list_rows_handler = settings.changed ["small-keys-list-rows"].connect (() => {
+ if (settings.get_boolean ("small-keys-list-rows"))
+ {
+ if (!context.has_class ("small-keys-list-rows")) context.add_class
("small-keys-list-rows");
+ }
+ else if (context.has_class ("small-keys-list-rows")) context.remove_class
("small-keys-list-rows");
+ });
+ small_bookmarks_rows_handler = settings.changed ["small-bookmarks-rows"].connect (() => {
+ if (settings.get_boolean ("small-bookmarks-rows"))
+ {
+ if (!context.has_class ("small-bookmarks-rows")) context.add_class
("small-bookmarks-rows");
+ }
+ else if (context.has_class ("small-bookmarks-rows")) context.remove_class
("small-bookmarks-rows");
});
- if (settings.get_string ("theme") == "small-rows")
- get_style_context ().add_class ("small-rows");
+ if (settings.get_string ("theme") == "non-symbolic-keys-list")
+ context.add_class ("non-symbolic");
+ if (settings.get_boolean ("small-keys-list-rows"))
+ context.add_class ("small-keys-list-rows");
+ if (settings.get_boolean ("small-bookmarks-rows"))
+ context.add_class ("small-bookmarks-rows");
registry_view.bind_property ("current-path", this, "current-path"); // TODO in UI file?
settings.bind ("behaviour", registry_view, "behaviour",
SettingsBindFlags.GET|SettingsBindFlags.NO_SENSITIVITY);
@@ -173,6 +194,8 @@ class DConfWindow : ApplicationWindow
settings.disconnect (behaviour_changed_handler);
settings.disconnect (theme_changed_handler);
+ settings.disconnect (small_keys_list_rows_handler);
+ settings.disconnect (small_bookmarks_rows_handler);
settings.delay ();
settings.set_string ("saved-view", current_path);
diff --git a/editor/registry-view.ui b/editor/registry-view.ui
index cdb30ae..98b77bd 100644
--- a/editor/registry-view.ui
+++ b/editor/registry-view.ui
@@ -65,7 +65,7 @@
<property name="activate-on-single-click">True</property>
<property name="selection-mode">browse</property><!-- permits to not have an item selected
-->
<style>
- <class name="dconf-list"/>
+ <class name="keys-list"/>
</style>
<signal name="row-activated" handler="row_activated_cb"/>
<child type="placeholder"> <!-- see
nautilus/src/resources/ui/nautilus-folder-is-empty.ui -->
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]