Просмотр исходного кода

LibGUI: Try use layout's preferred size for the content size

Previously this was only done if the widget had shrink_to_fit property
enabled.
Karol Kosek 3 лет назад
Родитель
Сommit
f505f1ab5e
1 измененных файлов с 13 добавлено и 5 удалено
  1. 13 5
      Userland/Libraries/LibGUI/ScrollableContainerWidget.cpp

+ 13 - 5
Userland/Libraries/LibGUI/ScrollableContainerWidget.cpp

@@ -38,12 +38,20 @@ void ScrollableContainerWidget::update_widget_size()
         return;
     m_widget->do_layout();
     auto new_size = Widget::content_size();
-    if (m_widget->is_shrink_to_fit() && m_widget->layout()) {
+
+    if (m_widget->layout()) {
         auto preferred_size = m_widget->layout()->preferred_size();
-        if (preferred_size.width() != -1)
-            new_size.set_width(preferred_size.width());
-        if (preferred_size.height() != -1)
-            new_size.set_height(preferred_size.height());
+        if (m_widget->is_shrink_to_fit()) {
+            if (preferred_size.width() != -1)
+                new_size.set_width(preferred_size.width());
+            if (preferred_size.height() != -1)
+                new_size.set_height(preferred_size.height());
+        } else {
+            new_size = Gfx::Size {
+                max(new_size.width(), preferred_size.width()),
+                max(new_size.height(), preferred_size.height())
+            };
+        }
     }
 
     auto min_size = m_widget->min_size();