diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2016-01-04 18:14:33 -0800 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2016-01-04 18:14:33 -0800 |
commit | 637ade656aac2a9ed0e211477bb9ccf77529e908 (patch) | |
tree | abed6496300844fc37a42bc311cee4a51999294e /gtk/gtklevelbar.c | |
parent | 183bcb41ecae92f73b07c4eca6f120e177f20735 (diff) | |
download | gtk+-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.c | 46 |
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) { |