[gtk+] Reset effective_attrs when necessary



commit b242c02e71f00e21ed6b1f5146035db75c607642
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Jan 17 23:33:19 2010 -0500

    Reset effective_attrs when necessary
    
    This fixes both bug 607217 and bug 607269.

 gtk/gtklabel.c |   24 +++++++++++-------------
 1 files changed, 11 insertions(+), 13 deletions(-)
---
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 0dba63b..35de1f9 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));
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]