stylecontext: Make queue_invalidate() always work

Handle both the case where a widget is set and also the case where a
widget path is set.
This commit is contained in:
Benjamin Otte 2012-05-08 01:35:00 +02:00
parent a0f155e839
commit f51c9d4154

View File

@ -663,12 +663,7 @@ static void
gtk_style_context_cascade_changed (GtkStyleCascade *cascade,
GtkStyleContext *context)
{
GtkStyleContextPrivate *priv = context->priv;
if (priv->widget)
_gtk_style_context_queue_invalidate (context, GTK_CSS_CHANGE_SOURCE);
else
gtk_style_context_invalidate (context);
_gtk_style_context_queue_invalidate (context, GTK_CSS_CHANGE_SOURCE);
}
static void
@ -2556,8 +2551,6 @@ gtk_style_context_set_screen (GtkStyleContext *context,
priv->screen = screen;
g_object_notify (G_OBJECT (context), "screen");
gtk_style_context_invalidate (context);
}
/**
@ -3162,11 +3155,15 @@ _gtk_style_context_queue_invalidate (GtkStyleContext *context,
priv = context->priv;
if (priv->widget == NULL && priv->widget_path == NULL)
return;
priv->pending_changes |= change;
gtk_style_context_set_invalid (context, TRUE);
if (priv->widget != NULL)
{
priv->pending_changes |= change;
gtk_style_context_set_invalid (context, TRUE);
}
else if (priv->widget_path == NULL)
{
gtk_style_context_invalidate (context);
}
}
/**