summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2010-01-17 23:33:19 -0500
committerMatthias Clasen <mclasen@redhat.com>2010-01-17 23:33:19 -0500
commitb242c02e71f00e21ed6b1f5146035db75c607642 (patch)
tree75f91e624f290f5986e0b0ca4b9faafd0cea9948
parent3fdcf3d3e2a127d168d50b651aac6fc9e6b931f6 (diff)
downloadgtk+-b242c02e71f00e21ed6b1f5146035db75c607642.tar.gz
Reset effective_attrs when necessary
This fixes both bug 607217 and bug 607269.
-rw-r--r--gtk/gtklabel.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 0dba63ba4e..35de1f95c5 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -1865,24 +1865,22 @@ gtk_label_recalculate (GtkLabel *label)
guint keyval = label->mnemonic_keyval;
if (label->use_markup)
- {
- gtk_label_set_markup_internal (label, label->label, label->use_underline);
- gtk_label_compose_effective_attrs (label);
- }
+ gtk_label_set_markup_internal (label, label->label, label->use_underline);
else
{
if (label->use_underline)
- {
- gtk_label_set_uline_text_internal (label, label->label);
- gtk_label_compose_effective_attrs (label);
- }
+ gtk_label_set_uline_text_internal (label, label->label);
else
- {
- gtk_label_set_text_internal (label, g_strdup (label->label));
- gtk_label_compose_effective_attrs (label);
- }
+ {
+ if (label->effective_attrs)
+ pango_attr_list_unref (label->effective_attrs);
+ label->effective_attrs = NULL;
+ gtk_label_set_text_internal (label, g_strdup (label->label));
+ }
}
+ gtk_label_compose_effective_attrs (label);
+
if (!label->use_underline)
label->mnemonic_keyval = GDK_VoidSymbol;
@@ -1949,7 +1947,7 @@ gtk_label_set_attributes (GtkLabel *label,
gtk_label_recalculate (label);
- gtk_label_clear_layout (label);
+ gtk_label_clear_layout (label);
gtk_widget_queue_resize (GTK_WIDGET (label));
}