diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-09-19 23:58:11 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-09-23 07:01:15 -0400 |
commit | 1bb86c2056442663caa6c69069f94f6d9d7f3d97 (patch) | |
tree | 6c169136049e241d73b336f5362c302bd9d2da56 | |
parent | ea241c691cd819a7584d7187c69ab95293f6f81c (diff) | |
download | gtk+-1bb86c2056442663caa6c69069f94f6d9d7f3d97.tar.gz |
label: Avoid recalculation in some cases
Avoid recalculation the entire label layout when nothing changed.
-rw-r--r-- | gtk/gtklabel.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index 6a639fdcaa..7b2775f138 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -412,10 +412,10 @@ static void gtk_label_set_text_internal (GtkLabel *label, gchar *str); static void gtk_label_set_label_internal (GtkLabel *label, gchar *str); -static void gtk_label_set_use_markup_internal (GtkLabel *label, - gboolean val); -static void gtk_label_set_use_underline_internal (GtkLabel *label, - gboolean val); +static gboolean gtk_label_set_use_markup_internal (GtkLabel *label, + gboolean val); +static gboolean gtk_label_set_use_underline_internal (GtkLabel *label, + gboolean val); static void gtk_label_set_uline_text_internal (GtkLabel *label, const gchar *str); static void gtk_label_set_pattern_internal (GtkLabel *label, @@ -2129,9 +2129,9 @@ gtk_label_set_label_internal (GtkLabel *label, g_object_notify_by_pspec (G_OBJECT (label), label_props[PROP_LABEL]); } -static void +static gboolean gtk_label_set_use_markup_internal (GtkLabel *label, - gboolean val) + gboolean val) { GtkLabelPrivate *priv = label->priv; @@ -2141,12 +2141,16 @@ gtk_label_set_use_markup_internal (GtkLabel *label, priv->use_markup = val; g_object_notify_by_pspec (G_OBJECT (label), label_props[PROP_USE_MARKUP]); + + return TRUE; } + + return FALSE; } -static void +static gboolean gtk_label_set_use_underline_internal (GtkLabel *label, - gboolean val) + gboolean val) { GtkLabelPrivate *priv = label->priv; @@ -2156,7 +2160,11 @@ gtk_label_set_use_underline_internal (GtkLabel *label, priv->use_underline = val; g_object_notify_by_pspec (G_OBJECT (label), label_props[PROP_USE_UNDERLINE]); + + return TRUE; } + + return FALSE; } /* Calculates text, attrs and mnemonic_keyval from @@ -5947,8 +5955,8 @@ gtk_label_set_use_markup (GtkLabel *label, g_object_freeze_notify (G_OBJECT (label)); - gtk_label_set_use_markup_internal (label, setting); - gtk_label_recalculate (label); + if (gtk_label_set_use_markup_internal (label, setting)) + gtk_label_recalculate (label); g_object_thaw_notify (G_OBJECT (label)); } @@ -5987,8 +5995,8 @@ gtk_label_set_use_underline (GtkLabel *label, g_object_freeze_notify (G_OBJECT (label)); - gtk_label_set_use_underline_internal (label, setting); - gtk_label_recalculate (label); + if (gtk_label_set_use_underline_internal (label, setting)) + gtk_label_recalculate (label); g_object_thaw_notify (G_OBJECT (label)); } |