[gnome-shell] St: fix parsing of transition-duration values
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] St: fix parsing of transition-duration values
- Date: Thu, 3 Jan 2013 02:48:26 +0000 (UTC)
commit 8be3c5ed21643369f963e4638a578e32271ce749
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Tue Aug 7 16:20:43 2012 +0200
St: fix parsing of transition-duration values
According to css3-transition, transition-duration is expressed
as a time, that is, in seconds or milliseconds. Fix that by
recognizing numbers with units and implicitly converting to
milliseconds after parsing.
https://bugzilla.gnome.org/show_bug.cgi?id=681376
data/theme/gnome-shell.css | 23 ++++++++-------
src/st/st-theme-node.c | 68 +++++++++++++++++++++++++++++++++++++++++++-
src/st/st-theme-node.h | 4 ++
3 files changed, 83 insertions(+), 12 deletions(-)
---
diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
index 634d4cf..977efa8 100644
--- a/data/theme/gnome-shell.css
+++ b/data/theme/gnome-shell.css
@@ -359,7 +359,7 @@ StScrollBar StButton#vhandle:active {
background-gradient-start: rgba(5,5,6,0.1);
background-gradient-end: rgba(254,254,254,0.1);
background-gradient-direction: vertical;
- transition-duration: 300;
+ transition-duration: 300ms;
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.6);
}
@@ -394,7 +394,7 @@ StScrollBar StButton#vhandle:active {
color: rgb(64, 64, 64);
caret-color: rgb(64, 64, 64);
font-weight: bold;
- transition-duration: 0;
+ transition-duration: 0ms;
}
.notification StEntry,
@@ -425,7 +425,7 @@ StScrollBar StButton#vhandle:active {
background-color: black;
font-weight: bold;
height: 1.86em;
- transition-duration: 250;
+ transition-duration: 250ms;
}
#panel.lock-screen {
@@ -508,7 +508,7 @@ StScrollBar StButton#vhandle:active {
-minimum-hpadding: 6px;
font-weight: bold;
color: #ccc;
- transition-duration: 100;
+ transition-duration: 100ms;
}
#panel.unlock-screen .panel-button,
@@ -922,7 +922,7 @@ StScrollBar StButton#vhandle:active {
border-radius: 4px;
padding: 3px;
border: 1px rgba(0,0,0,0);
- transition-duration: 100;
+ transition-duration: 100ms;
text-align: center;
}
@@ -939,7 +939,7 @@ StScrollBar StButton#vhandle:active {
.grid-search-result:hover .overview-icon {
background-color: rgba(255,255,255,0.1);
text-shadow: black 0px 2px 2px;
- transition-duration: 100;
+ transition-duration: 100ms;
color:white;
}
@@ -961,13 +961,13 @@ StScrollBar StButton#vhandle:active {
background-gradient-direction: vertical;
border-radius: 4px;
box-shadow: inset 0px 1px 2px 0px rgba(0, 0, 0, 1);
- transition-duration: 100;
+ transition-duration: 100ms;
}
.show-apps:checked .show-apps-icon,
.show-apps:focus .show-apps-icon {
color: white;
- transition-duration: 100;
+ transition-duration: 100ms;
}
.app-well-app:focus > .overview-icon,
@@ -1006,7 +1006,7 @@ StScrollBar StButton#vhandle:active {
-minimum-hpadding: 6px;
font-weight: bold;
color: #ccc;
- transition-duration: 100;
+ transition-duration: 100ms;
padding-left: .3em;
padding-right: .3em;
}
@@ -1309,7 +1309,8 @@ StScrollBar StButton#vhandle:active {
#message-tray {
background: #2e3436 url(message-tray-background.png);
background-repeat: repeat;
- transition-duration: 250;
+ transition-duration: 250ms;
+ height: 72px;
}
#message-tray:keyboard {
@@ -1579,7 +1580,7 @@ StScrollBar StButton#vhandle:active {
.summary-source {
border-radius: 4px;
padding: 0 6px 0 6px;
- transition-duration: 100;
+ transition-duration: 100ms;
}
.summary-source-counter {
diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c
index 694c496..dc3fcc2 100644
--- a/src/st/st-theme-node.c
+++ b/src/st/st-theme-node.c
@@ -771,6 +771,72 @@ st_theme_node_lookup_double (StThemeNode *node,
}
/**
+ * st_theme_node_lookup_time:
+ * @node: a #StThemeNode
+ * @property_name: The name of the time property
+ * @inherit: if %TRUE, if a value is not found for the property on the
+ * node, then it will be looked up on the parent node, and then on the
+ * parent's parent, and so forth. Note that if the property has a
+ * value of 'inherit' it will be inherited even if %FALSE is passed
+ * in for @inherit; this only affects the default behavior for inheritance.
+ * @value: (out): location to store the value that was determined.
+ * If the property is not found, the value in this location
+ * will not be changed.
+ *
+ * Generically looks up a property containing a single time value,
+ * which is converted to milliseconds.
+ *
+ * Return value: %TRUE if the property was found in the properties for this
+ * theme node (or in the properties of parent nodes when inheriting.)
+ */
+gboolean
+st_theme_node_lookup_time (StThemeNode *node,
+ const char *property_name,
+ gboolean inherit,
+ double *value)
+{
+ gboolean result = FALSE;
+ int i;
+
+ ensure_properties (node);
+
+ for (i = node->n_properties - 1; i >= 0; i--)
+ {
+ CRDeclaration *decl = node->properties[i];
+
+ if (strcmp (decl->property->stryng->str, property_name) == 0)
+ {
+ CRTerm *term = decl->value;
+
+ if (term->type != TERM_NUMBER)
+ continue;
+
+ switch (term->content.num->type)
+ {
+ case NUM_TIME_S:
+ *value = 1000 * term->content.num->val;
+ result = TRUE;
+ break;
+ case NUM_TIME_MS:
+ *value = term->content.num->val;
+ result = TRUE;
+ break;
+ default:
+ ;
+ }
+
+ if (result)
+ break;
+ }
+ }
+
+ if (!result && inherit && node->parent_node)
+ result = st_theme_node_lookup_time (node->parent_node, property_name, inherit, value);
+
+ return result;
+}
+
+/**
* st_theme_node_get_double:
* @node: a #StThemeNode
* @property_name: The name of the numeric property
@@ -2063,7 +2129,7 @@ st_theme_node_get_transition_duration (StThemeNode *node)
if (node->transition_duration > -1)
return st_slow_down_factor * node->transition_duration;
- st_theme_node_lookup_double (node, "transition-duration", FALSE, &value);
+ st_theme_node_lookup_time (node, "transition-duration", FALSE, &value);
node->transition_duration = (int)value;
diff --git a/src/st/st-theme-node.h b/src/st/st-theme-node.h
index 120cef8..98da358 100644
--- a/src/st/st-theme-node.h
+++ b/src/st/st-theme-node.h
@@ -134,6 +134,10 @@ gboolean st_theme_node_lookup_length (StThemeNode *node,
const char *property_name,
gboolean inherit,
gdouble *length);
+gboolean st_theme_node_lookup_time (StThemeNode *node,
+ const char *property_name,
+ gboolean inherit,
+ gdouble *value);
gboolean st_theme_node_lookup_shadow (StThemeNode *node,
const char *property_name,
gboolean inherit,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]