summaryrefslogtreecommitdiff
path: root/gtk/gtklevelbar.c
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2016-01-04 18:14:33 -0800
committerCosimo Cecchi <cosimoc@gnome.org>2016-01-04 18:14:33 -0800
commit637ade656aac2a9ed0e211477bb9ccf77529e908 (patch)
treeabed6496300844fc37a42bc311cee4a51999294e /gtk/gtklevelbar.c
parent183bcb41ecae92f73b07c4eca6f120e177f20735 (diff)
downloadgtk+-637ade656aac2a9ed0e211477bb9ccf77529e908.tar.gz
levelbar: loop over all block gadgets to determine min size
Instead of just picking the first. This is because the theme might set a border on only one of them, like the HighContrast theme does.
Diffstat (limited to 'gtk/gtklevelbar.c')
-rw-r--r--gtk/gtklevelbar.c46
1 files changed, 29 insertions, 17 deletions
diff --git a/gtk/gtklevelbar.c b/gtk/gtklevelbar.c
index aad1876020..f681680907 100644
--- a/gtk/gtklevelbar.c
+++ b/gtk/gtklevelbar.c
@@ -255,23 +255,6 @@ gtk_level_bar_value_in_interval (GtkLevelBar *self,
(value <= self->priv->max_value));
}
-static void
-gtk_level_bar_get_min_block_size (GtkLevelBar *self,
- gint *block_width,
- gint *block_height)
-{
- gtk_css_gadget_get_preferred_size (self->priv->block_gadget[0],
- GTK_ORIENTATION_HORIZONTAL,
- -1,
- block_width, NULL,
- NULL, NULL);
- gtk_css_gadget_get_preferred_size (self->priv->block_gadget[0],
- GTK_ORIENTATION_VERTICAL,
- -1,
- block_height, NULL,
- NULL, NULL);
-}
-
static gint
gtk_level_bar_get_num_blocks (GtkLevelBar *self)
{
@@ -292,6 +275,35 @@ gtk_level_bar_get_num_block_nodes (GtkLevelBar *self)
return gtk_level_bar_get_num_blocks (self);
}
+static void
+gtk_level_bar_get_min_block_size (GtkLevelBar *self,
+ gint *block_width,
+ gint *block_height)
+{
+ guint i, n_blocks;
+ gint width, height;
+
+ *block_width = *block_height = 0;
+ n_blocks = gtk_level_bar_get_num_block_nodes (self);
+
+ for (i = 0; i < n_blocks; i++)
+ {
+ gtk_css_gadget_get_preferred_size (self->priv->block_gadget[i],
+ GTK_ORIENTATION_HORIZONTAL,
+ -1,
+ &width, NULL,
+ NULL, NULL);
+ gtk_css_gadget_get_preferred_size (self->priv->block_gadget[i],
+ GTK_ORIENTATION_VERTICAL,
+ -1,
+ &height, NULL,
+ NULL, NULL);
+
+ *block_width = MAX (width, *block_width);
+ *block_height = MAX (height, *block_height);
+ }
+}
+
static gboolean
gtk_level_bar_get_real_inverted (GtkLevelBar *self)
{