summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2018-06-05 22:12:45 +0000
committerMatthias Clasen <mclasen@redhat.com>2018-06-05 22:12:45 +0000
commit7e0b9704ed59e2886321594e7b26afdd0515a520 (patch)
treec1d27ad57ae865b9acd6d12cdd69516b0e643198
parent700d167b9e4139a99912f65381836fa229e0594c (diff)
parentdaecee75b48b4f26e7c1d5169729aa763505f329 (diff)
downloadgtk+-7e0b9704ed59e2886321594e7b26afdd0515a520.tar.gz
Merge branch '1088-getting-css-properties-defined-in-em-etc-in-px-rounds-toward-0-delivering-1-too-few-pixels' into 'gtk-3-24'
Resolve "Getting CSS properties defined in em (etc.) in px rounds toward 0, delivering 1 too few pixels" See merge request GNOME/gtk!158
-rw-r--r--gtk/gtkcssgadget.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gtk/gtkcssgadget.c b/gtk/gtkcssgadget.c
index 7d4ba9c73b..09e9fdfa38 100644
--- a/gtk/gtkcssgadget.c
+++ b/gtk/gtkcssgadget.c
@@ -459,6 +459,14 @@ get_number (GtkCssStyle *style,
return floor (d);
}
+/* Special-case min-width|height to round upwards, to avoid underalloc by 1px */
+static int
+get_number_ceil (GtkCssStyle *style,
+ guint property)
+{
+ return ceil (_gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100));
+}
+
static void
get_box_margin (GtkCssStyle *style,
GtkBorder *margin)
@@ -643,16 +651,16 @@ gtk_css_gadget_get_preferred_size (GtkCssGadget *gadget,
extra_size = margin.left + margin.right + border.left + border.right + padding.left + padding.right;
extra_opposite = margin.top + margin.bottom + border.top + border.bottom + padding.top + padding.bottom;
extra_baseline = margin.left + border.left + padding.left;
- min_size = get_number (style, GTK_CSS_PROPERTY_MIN_WIDTH);
- min_for_size = get_number (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
+ min_size = get_number_ceil (style, GTK_CSS_PROPERTY_MIN_WIDTH);
+ min_for_size = get_number_ceil (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
}
else
{
extra_size = margin.top + margin.bottom + border.top + border.bottom + padding.top + padding.bottom;
extra_opposite = margin.left + margin.right + border.left + border.right + padding.left + padding.right;
extra_baseline = margin.top + border.top + padding.top;
- min_size = get_number (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
- min_for_size = get_number (style, GTK_CSS_PROPERTY_MIN_WIDTH);
+ min_size = get_number_ceil (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
+ min_for_size = get_number_ceil (style, GTK_CSS_PROPERTY_MIN_WIDTH);
}
if (for_size > -1)