label: Handle width-chars > text width
authorBenjamin Otte <otte@redhat.com>
Tue, 9 Nov 2021 16:49:40 +0000 (17:49 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 9 Nov 2021 17:34:35 +0000 (18:34 +0100)
This was broken in wrapping labels.

Testcase included.

gtk/gtklabel.c
testsuite/reftests/label-wrap-width-chars.ref.ui [new file with mode: 0644]
testsuite/reftests/label-wrap-width-chars.ui [new file with mode: 0644]
testsuite/reftests/meson.build

index a82ec7bb779ab5851785919d15c9a5c9e9146f83..4d84d6fc8d959da625957a296f19903fa724eeb9 100644 (file)
@@ -1174,6 +1174,7 @@ get_width_for_height (GtkLabel *self,
       /* Minimum width is as many line breaks as possible */
       layout = gtk_label_get_measuring_layout (self, NULL, MAX (minimum_default, 0));
       pango_layout_get_size (layout, minimum_width, NULL);
+      *minimum_width = MAX (*minimum_width, minimum_default);
 
       /* Natural width is natural width - or as wide as possible */
       layout = gtk_label_get_measuring_layout (self, layout, natural_default);
diff --git a/testsuite/reftests/label-wrap-width-chars.ref.ui b/testsuite/reftests/label-wrap-width-chars.ref.ui
new file mode 100644 (file)
index 0000000..0fea151
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <object class="GtkWindow" id="window1">
+    <property name="decorated">0</property>
+    <child>
+      <object class="GtkLabel" id="label1">
+        <property name="label" translatable="yes">Hello World</property>
+        <property name="width-chars">20</property>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/testsuite/reftests/label-wrap-width-chars.ui b/testsuite/reftests/label-wrap-width-chars.ui
new file mode 100644 (file)
index 0000000..9c875e6
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <object class="GtkWindow" id="window1">
+    <property name="decorated">0</property>
+    <child>
+      <object class="GtkLabel" id="label1">
+        <property name="label" translatable="yes">Hello World</property>
+        <property name="wrap">1</property>
+        <property name="width-chars">20</property>
+      </object>
+    </child>
+  </object>
+</interface>
index 83a06c9c80a8a9cd62ae8a41acee6cb3aa80ec93..8ef810ae7d66c928f8e8596eebb746c33e85d7a0 100644 (file)
@@ -369,6 +369,8 @@ testdata = [
   'label-text-shadow-changes-modify-clip.ui',
   'label-width-chars-dont-shrink.ref.ui',
   'label-width-chars-dont-shrink.ui',
+  'label-wrap-width-chars.ref.ui',
+  'label-wrap-width-chars.ui',
   'label-wrapped-huge-max-width-chars.ref.ui',
   'label-wrapped-huge-max-width-chars.ui',
   # this seems to make assumptions on text positioning