Index: gtklabel.c
===================================================================
--- gtklabel.c	(révision 18245)
+++ gtklabel.c	(copie de travail)
@@ -53,6 +53,8 @@ typedef struct
   gint wrap_width;
   gint width_chars;
   gint max_width_chars;
+
+  guint pattern_set : 1;
 }
 GtkLabelPrivate;
 
@@ -789,6 +791,7 @@ gtk_label_init (GtkLabel *label)
   priv->width_chars = -1;
   priv->max_width_chars = -1;
   priv->wrap_width = -1;
+  priv->pattern_set = FALSE;
   label->label = NULL;
 
   label->jtype = GTK_JUSTIFY_LEFT;
@@ -1537,6 +1540,9 @@ gtk_label_set_pattern_internal (GtkLabel
 
   g_return_if_fail (GTK_IS_LABEL (label));
 
+  if (GTK_LABEL_GET_PRIVATE (label)->pattern_set)
+	  return;
+
   g_object_get (gtk_widget_get_settings (GTK_WIDGET (label)),
 		"gtk-enable-mnemonics", &enable_mnemonics,
 		NULL);
@@ -1555,9 +1561,15 @@ void
 gtk_label_set_pattern (GtkLabel	   *label,
 		       const gchar *pattern)
 {
+  GtkLabelPrivate *priv;
+
   g_return_if_fail (GTK_IS_LABEL (label));
   
+  priv = GTK_LABEL_GET_PRIVATE (label);
+
+  priv->pattern_set = FALSE;
   gtk_label_set_pattern_internal (label, pattern);
+  priv->pattern_set = TRUE;
 
   gtk_label_clear_layout (label);  
   gtk_widget_queue_resize (GTK_WIDGET (label));
