diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index f5d1e86ea5..ad182f2be3 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -3281,8 +3281,19 @@ _gtk_style_context_validate (GtkStyleContext *context, _gtk_bitmask_free (animation_changes); } - if (!_gtk_bitmask_is_empty (changes) || (change & GTK_CSS_CHANGE_FORCE_INVALIDATE)) - gtk_style_context_do_invalidate (context, changes); + if (change & GTK_CSS_CHANGE_FORCE_INVALIDATE) + { + GtkBitmask *full = _gtk_bitmask_new (); + full = _gtk_bitmask_invert_range (full, + 0, + _gtk_css_style_property_get_n_properties ()); + gtk_style_context_do_invalidate (context, full); + _gtk_bitmask_free (full); + } + else if (!_gtk_bitmask_is_empty (changes)) + { + gtk_style_context_do_invalidate (context, changes); + } change = _gtk_css_change_for_child (change); for (list = priv->children; list; list = list->next)