diff options
author | Sebastian Keller <sebastian-keller@gmx.de> | 2015-01-21 15:29:54 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2015-01-21 16:20:42 +0100 |
commit | 728bce2cf8258e46f11c3452539b3bf064f60f5c (patch) | |
tree | a363df84b5db3c1e35580e13857c70a1a4fe400b /gtk/gtkcssnumbervalue.c | |
parent | 610f7e8f70ce165e04a4cdc3fd20b560f500b925 (diff) | |
download | gtk+-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.c | 34 |
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: |