[gtk+] widget: Properly invalidate when CSS font properties change.
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] widget: Properly invalidate when CSS font properties change.
- Date: Wed, 20 Jan 2016 01:19:58 +0000 (UTC)
commit 065aa296ed4908dff896818e9859258ab9ed9e02
Author: Benjamin Otte <otte redhat com>
Date: Wed Jan 20 02:17:32 2016 +0100
widget: Properly invalidate when CSS font properties change.
gtk/gtkwidget.c | 41 +++++++++++++++++++++++++----------------
1 files changed, 25 insertions(+), 16 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 2d9fd7f..ba85df6 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -8112,30 +8112,22 @@ gtk_widget_real_style_updated (GtkWidget *widget)
{
GtkWidgetPrivate *priv = widget->priv;
- gtk_widget_update_pango_context (widget);
gtk_widget_update_alpha (widget);
- G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
- if (priv->style != NULL &&
- priv->style != gtk_widget_get_default_style ())
- {
- /* Trigger ::style-set for old
- * widgets not listening to this
- */
- g_signal_emit (widget,
- widget_signals[STYLE_SET],
- 0,
- widget->priv->style);
- }
- G_GNUC_END_IGNORE_DEPRECATIONS;
-
if (widget->priv->context)
{
GtkCssStyleChange *change = gtk_style_context_get_change (widget->priv->context);
+ gboolean has_text = gtk_widget_peek_pango_context (widget) != NULL;
+
+ if (change == NULL ||
+ (has_text && gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_FONT)))
+ gtk_widget_update_pango_context (widget);
if (widget->priv->anchored)
{
- if (change == NULL || gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE))
+ if (change == NULL ||
+ gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE) ||
+ (has_text && gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TEXT)))
gtk_widget_queue_resize (widget);
else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_CLIP))
gtk_widget_queue_allocate (widget);
@@ -8145,9 +8137,26 @@ gtk_widget_real_style_updated (GtkWidget *widget)
}
else
{
+ gtk_widget_update_pango_context (widget);
+
if (widget->priv->anchored)
gtk_widget_queue_resize (widget);
}
+
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
+ if (priv->style != NULL &&
+ priv->style != gtk_widget_get_default_style ())
+ {
+ /* Trigger ::style-set for old
+ * widgets not listening to this
+ */
+ g_signal_emit (widget,
+ widget_signals[STYLE_SET],
+ 0,
+ widget->priv->style);
+ }
+ G_GNUC_END_IGNORE_DEPRECATIONS;
+
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]