diff --git a/gtk/gtkcssshadowsvalue.c b/gtk/gtkcssshadowsvalue.c index 6aafa92ce4..f99401adcf 100644 --- a/gtk/gtkcssshadowsvalue.c +++ b/gtk/gtkcssshadowsvalue.c @@ -21,6 +21,8 @@ #include "gtkcssshadowsvalueprivate.h" +#include + #include "gtkcairoblurprivate.h" #include "gtkcssshadowvalueprivate.h" @@ -337,10 +339,10 @@ _gtk_css_shadows_value_get_extents (const GtkCssValue *shadows, &radius, &spread); clip_radius = _gtk_cairo_blur_compute_pixels (radius); - b.top = MAX (0, clip_radius + spread - voffset); - b.right = MAX (0, clip_radius + spread + hoffset); - b.bottom = MAX (0, clip_radius + spread + voffset); - b.left = MAX (0, clip_radius + spread - hoffset); + b.top = MAX (0, ceil (clip_radius + spread - voffset)); + b.right = MAX (0, ceil (clip_radius + spread + hoffset)); + b.bottom = MAX (0, ceil (clip_radius + spread + voffset)); + b.left = MAX (0, ceil (clip_radius + spread - hoffset)); border->top = MAX (border->top, b.top); border->right = MAX (border->right, b.right); diff --git a/testsuite/reftests/Makefile.am b/testsuite/reftests/Makefile.am index 103b523fde..f88876e90e 100644 --- a/testsuite/reftests/Makefile.am +++ b/testsuite/reftests/Makefile.am @@ -337,6 +337,9 @@ testdata = \ separator-size.ui \ set-default-direction.ui \ set-default-direction.ref.ui \ + shadow-clip-rounding.css \ + shadow-clip-rounding.ref.ui \ + shadow-clip-rounding.ui \ shorthand-entry-border.css \ shorthand-entry-border.ref.ui \ shorthand-entry-border.ui \ diff --git a/testsuite/reftests/shadow-clip-rounding.css b/testsuite/reftests/shadow-clip-rounding.css new file mode 100644 index 0000000000..2a4912af76 --- /dev/null +++ b/testsuite/reftests/shadow-clip-rounding.css @@ -0,0 +1,9 @@ +@import "reset-to-defaults.css"; + +.test { + box-shadow: 0 0.99999px red; +} + +.reference { + box-shadow: 0 1px red; +} diff --git a/testsuite/reftests/shadow-clip-rounding.ref.ui b/testsuite/reftests/shadow-clip-rounding.ref.ui new file mode 100644 index 0000000000..31f744d3a9 --- /dev/null +++ b/testsuite/reftests/shadow-clip-rounding.ref.ui @@ -0,0 +1,23 @@ + + + + + + 100 + 100 + False + popup + + + True + False + center + center + X + + + + + diff --git a/testsuite/reftests/shadow-clip-rounding.ui b/testsuite/reftests/shadow-clip-rounding.ui new file mode 100644 index 0000000000..03741621b7 --- /dev/null +++ b/testsuite/reftests/shadow-clip-rounding.ui @@ -0,0 +1,23 @@ + + + + + + 100 + 100 + False + popup + + + True + False + center + center + X + + + + +