summaryrefslogtreecommitdiff
path: root/gtk/gtkcssnumbervalue.c
diff options
context:
space:
mode:
authorSebastian Keller <sebastian-keller@gmx.de>2015-01-21 15:29:54 +0100
committerBenjamin Otte <otte@redhat.com>2015-01-21 16:20:42 +0100
commit728bce2cf8258e46f11c3452539b3bf064f60f5c (patch)
treea363df84b5db3c1e35580e13857c70a1a4fe400b /gtk/gtkcssnumbervalue.c
parent610f7e8f70ce165e04a4cdc3fd20b560f500b925 (diff)
downloadgtk+-728bce2cf8258e46f11c3452539b3bf064f60f5c.tar.gz
css: Move "border-style: none" special case to CssValueNumber
This fixes the background being shifted by the border-width even though the border-style was none.
Diffstat (limited to 'gtk/gtkcssnumbervalue.c')
-rw-r--r--gtk/gtkcssnumbervalue.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c
index e82781967b..1c95317351 100644
--- a/gtk/gtkcssnumbervalue.c
+++ b/gtk/gtkcssnumbervalue.c
@@ -64,6 +64,40 @@ gtk_css_value_number_compute (GtkCssValue *number,
GtkCssStyle *parent_values,
GtkCssDependencies *dependencies)
{
+ GtkBorderStyle border_style;
+
+ /* special case according to http://dev.w3.org/csswg/css-backgrounds/#the-border-width */
+ switch (property_id)
+ {
+ case GTK_CSS_PROPERTY_BORDER_TOP_WIDTH:
+ border_style = _gtk_css_border_style_value_get(gtk_css_style_get_value (values, GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
+ if (border_style == GTK_BORDER_STYLE_NONE || border_style == GTK_BORDER_STYLE_HIDDEN)
+ return _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ break;
+ case GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH:
+ border_style = _gtk_css_border_style_value_get(gtk_css_style_get_value (values, GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE));
+ if (border_style == GTK_BORDER_STYLE_NONE || border_style == GTK_BORDER_STYLE_HIDDEN)
+ return _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ break;
+ case GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH:
+ border_style = _gtk_css_border_style_value_get(gtk_css_style_get_value (values, GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE));
+ if (border_style == GTK_BORDER_STYLE_NONE || border_style == GTK_BORDER_STYLE_HIDDEN)
+ return _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ break;
+ case GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH:
+ border_style = _gtk_css_border_style_value_get(gtk_css_style_get_value (values, GTK_CSS_PROPERTY_BORDER_LEFT_STYLE));
+ if (border_style == GTK_BORDER_STYLE_NONE || border_style == GTK_BORDER_STYLE_HIDDEN)
+ return _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ break;
+ case GTK_CSS_PROPERTY_OUTLINE_WIDTH:
+ border_style = _gtk_css_border_style_value_get(gtk_css_style_get_value (values, GTK_CSS_PROPERTY_OUTLINE_STYLE));
+ if (border_style == GTK_BORDER_STYLE_NONE || border_style == GTK_BORDER_STYLE_HIDDEN)
+ return _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ break;
+ default:
+ break;
+ }
+
switch (number->unit)
{
default: