summaryrefslogtreecommitdiff
path: root/gtk/gtklevelbar.c
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2016-11-02 00:46:10 -0200
committerMatthias Clasen <mclasen@redhat.com>2016-11-04 12:38:21 -0400
commit85070839289cdeb281a18eb028a4e7b1e8708dee (patch)
treef4b6fceff39699f820962f1a3efdf50eaf31a6c1 /gtk/gtklevelbar.c
parentb8fc4c246ac6ef5cd7eccd477e2b64ea9efffff6 (diff)
downloadgtk+-85070839289cdeb281a18eb028a4e7b1e8708dee.tar.gz
levelbar: update css nodes even when no offset value is found
GtkLevelBar supports adding custom offsets as style classes, and they are applied whenever the :value property matches. The current code, however, only updates any CSS nodes when an offset is found, causing it to not update when a discrete value changes but no custom offset is added. Fix that by always updating the CSS nodes. https://bugzilla.gnome.org/show_bug.cgi?id=773799
Diffstat (limited to 'gtk/gtklevelbar.c')
-rw-r--r--gtk/gtklevelbar.c38
1 files changed, 17 insertions, 21 deletions
diff --git a/gtk/gtklevelbar.c b/gtk/gtklevelbar.c
index f7229f5934..33bf44cd79 100644
--- a/gtk/gtklevelbar.c
+++ b/gtk/gtklevelbar.c
@@ -644,9 +644,12 @@ update_level_style_classes (GtkLevelBar *self)
{
GtkLevelBarPrivate *priv = self->priv;
gdouble value;
+ const gchar *classes[3] = { NULL, NULL, NULL };
const gchar *value_class = NULL;
GtkLevelBarOffset *offset, *prev_offset;
GList *l;
+ gint num_filled, num_blocks, i;
+ gboolean inverted;
value = gtk_level_bar_get_value (self);
@@ -673,30 +676,23 @@ update_level_style_classes (GtkLevelBar *self)
break;
}
- if (value_class)
- {
- const gchar *classes[3] = { NULL, NULL, NULL };
- gint num_filled, num_blocks, i;
- gboolean inverted;
-
- inverted = gtk_level_bar_get_real_inverted (self);
- num_blocks = gtk_level_bar_get_num_block_nodes (self);
+ inverted = gtk_level_bar_get_real_inverted (self);
+ num_blocks = gtk_level_bar_get_num_block_nodes (self);
- if (priv->bar_mode == GTK_LEVEL_BAR_MODE_CONTINUOUS)
- num_filled = 1;
- else
- num_filled = MIN (num_blocks, (gint) round (priv->cur_value) - (gint) round (priv->min_value));
+ if (priv->bar_mode == GTK_LEVEL_BAR_MODE_CONTINUOUS)
+ num_filled = 1;
+ else
+ num_filled = MIN (num_blocks, (gint) round (priv->cur_value) - (gint) round (priv->min_value));
- classes[0] = "filled";
- classes[1] = value_class;
- for (i = 0; i < num_filled; i++)
- gtk_css_node_set_classes (gtk_css_gadget_get_node (priv->block_gadget[inverted ? num_blocks - 1 - i : i]), classes);
+ classes[0] = "filled";
+ classes[1] = value_class;
+ for (i = 0; i < num_filled; i++)
+ gtk_css_node_set_classes (gtk_css_gadget_get_node (priv->block_gadget[inverted ? num_blocks - 1 - i : i]), classes);
- classes[0] = "empty";
- classes[1] = NULL;
- for (; i < num_blocks; i++)
- gtk_css_node_set_classes (gtk_css_gadget_get_node (priv->block_gadget[inverted ? num_blocks - 1 - i : i]), classes);
- }
+ classes[0] = "empty";
+ classes[1] = NULL;
+ for (; i < num_blocks; i++)
+ gtk_css_node_set_classes (gtk_css_gadget_get_node (priv->block_gadget[inverted ? num_blocks - 1 - i : i]), classes);
}
static void