[gtk+] label: Add another special case for measuring



commit 21f117c695800a8f5a16a477c40a435fcd7d224a
Author: Benjamin Otte <otte redhat com>
Date:   Tue Mar 29 13:33:47 2011 +0200

    label: Add another special case for measuring

 gtk/gtklabel.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index ebf4431..759459e 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -3066,6 +3066,17 @@ gtk_label_get_measuring_layout (GtkLabel *   label,
       return priv->layout;
     }
 
+  /* We can use the label's own layout if we're not allocated a size yet,
+   * because we don't need it to be properly setup at that point.
+   * This way we can make use of caching upon the label's creation.
+   */
+  if (gtk_widget_get_allocated_width (GTK_WIDGET (label)) <= 1)
+    {
+      g_object_ref (priv->layout);
+      pango_layout_set_width (priv->layout, width);
+      return priv->layout;
+    }
+
   /* oftentimes we want to measure a width that is far wider than the current width,
    * even though the layout is not wrapped. In that case, we can just return the
    * current layout, because for measuring purposes, it will be identical.



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