]> Pileus Git - ~andy/gtk/commitdiff
label: Request more natural size for ellipsizing wrapping labels
authorBenjamin Otte <otte@redhat.com>
Mon, 18 Apr 2011 02:24:12 +0000 (04:24 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 19 Apr 2011 20:18:18 +0000 (22:18 +0200)
gtk/gtklabel.c

index f9abc0b25642fa678ea85e79ad424e4b3662199e..0ef1f7f2e57df4bbcaf49c1e79447f5e137ca4ee 100644 (file)
@@ -3487,6 +3487,7 @@ get_size_for_allocation (GtkLabel        *label,
                          gint            *minimum_size,
                          gint            *natural_size)
 {
+  GtkLabelPrivate *priv = label->priv;
   PangoLayout *layout;
   gint text_height;
 
@@ -3498,7 +3499,15 @@ get_size_for_allocation (GtkLabel        *label,
     *minimum_size = text_height;
 
   if (natural_size)
-    *natural_size = text_height;
+    {
+      if (priv->ellipsize && priv->wrap)
+        {
+          layout = gtk_label_get_measuring_layout (label, layout, allocation * PANGO_SCALE, G_MAXINT);
+          pango_layout_get_pixel_size (layout, NULL, &text_height);
+        }
+
+      *natural_size = text_height;
+    }
 
   g_object_unref (layout);
 }