]> Pileus Git - ~andy/gtk/commitdiff
Reset effective_attrs when necessary
authorMatthias Clasen <mclasen@redhat.com>
Mon, 18 Jan 2010 04:33:19 +0000 (23:33 -0500)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Sun, 4 Apr 2010 00:55:19 +0000 (20:55 -0400)
This fixes both bug 607217 and bug 607269.

gtk/gtklabel.c

index aebd8c61d2ff2072ef27d7db5626181beb8d7b0e..854318ce5d6317d1e85956aade94886822f8788b 100644 (file)
@@ -1911,24 +1911,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;
 
@@ -1995,7 +1993,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));
 }