]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtklabel.c
label: Request more natural size for ellipsizing wrapping labels
[~andy/gtk] / 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);
 }