[gtk+] css gadget: Adjust baselines for min-height
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] css gadget: Adjust baselines for min-height
- Date: Sun, 21 Feb 2016 03:31:52 +0000 (UTC)
commit a754579e441df5ad34e338061d21217f1f5d5af8
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Feb 20 22:23:28 2016 -0500
css gadget: Adjust baselines for min-height
We were forcing the size to be at least min-height, but we left the
baselines as they were, which had the effect of making text e.g
in entries 'stick to the top'.
With this change, we adjust the baseline to keep the ratio of
baseline to height unchanged.
gtk/gtkcssgadget.c | 24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 deletions(-)
---
diff --git a/gtk/gtkcssgadget.c b/gtk/gtkcssgadget.c
index 7a254eb..5bb7cac 100644
--- a/gtk/gtkcssgadget.c
+++ b/gtk/gtkcssgadget.c
@@ -515,6 +515,7 @@ gtk_css_gadget_get_preferred_size (GtkCssGadget *gadget,
GtkBorder margin, border, padding;
int min_size, extra_size, extra_opposite, extra_baseline;
int unused_minimum, unused_natural;
+ int forced_minimum, forced_natural;
if (minimum == NULL)
minimum = &unused_minimum;
@@ -567,16 +568,25 @@ gtk_css_gadget_get_preferred_size (GtkCssGadget *gadget,
g_warn_if_fail (*minimum <= *natural);
- *minimum = MAX (min_size, *minimum);
- *natural = MAX (min_size, *natural);
-
- *minimum = MAX (0, *minimum + extra_size);
- *natural = MAX (0, *natural + extra_size);
+ forced_minimum = MAX (*minimum, min_size);
+ forced_natural = MAX (*natural, min_size);
if (minimum_baseline && *minimum_baseline > -1)
- *minimum_baseline = MAX (0, *minimum_baseline + extra_baseline);
+ {
+ if (*minimum > 0)
+ *minimum_baseline = *minimum_baseline * forced_minimum / *minimum;
+ *minimum_baseline = MAX (0, *minimum_baseline + extra_baseline);
+ }
if (natural_baseline && *natural_baseline > -1)
- *natural_baseline = MAX (0, *natural_baseline + extra_baseline);
+ {
+ if (*natural > 0)
+ *natural_baseline = *natural_baseline * forced_natural / *natural;
+ *natural_baseline = MAX (0, *natural_baseline + extra_baseline);
+ }
+
+ *minimum = MAX (0, forced_minimum + extra_size);
+ *natural = MAX (0, forced_natural + extra_size);
+
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]