diff options
author | Matthias Clasen <mclasen@redhat.com> | 2010-01-17 23:33:19 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2010-01-17 23:33:19 -0500 |
commit | b242c02e71f00e21ed6b1f5146035db75c607642 (patch) | |
tree | 75f91e624f290f5986e0b0ca4b9faafd0cea9948 | |
parent | 3fdcf3d3e2a127d168d50b651aac6fc9e6b931f6 (diff) | |
download | gtk+-b242c02e71f00e21ed6b1f5146035db75c607642.tar.gz |
Reset effective_attrs when necessary
This fixes both bug 607217 and bug 607269.
-rw-r--r-- | gtk/gtklabel.c | 24 |
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)); } |