From 29a3ff22d7cd3377ebc6850bf8f47ff22dc5a859 Mon Sep 17 00:00:00 2001 From: FrHun <28605587+frhun@users.noreply.github.com> Date: Wed, 5 Oct 2022 18:29:51 +0200 Subject: [PATCH] LibGUI: Make Breadcrumbbar resizable below current size By making proper use of the dynamic layout system, the Breadcrumbbar can now shrink below its current (grown) size again, while still ensuring that no icon gets cut off. --- Userland/Libraries/LibGUI/Breadcrumbbar.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibGUI/Breadcrumbbar.cpp b/Userland/Libraries/LibGUI/Breadcrumbbar.cpp index 3f552fcd33..3bd10b5267 100644 --- a/Userland/Libraries/LibGUI/Breadcrumbbar.cpp +++ b/Userland/Libraries/LibGUI/Breadcrumbbar.cpp @@ -109,7 +109,8 @@ void Breadcrumbbar::append_segment(String text, Gfx::Bitmap const* icon, String auto button_width = min(button_text_width + icon_width + icon_padding + 16, max_button_width); auto shrunken_width = icon_width + icon_padding + (icon ? 4 : 16); - button.set_fixed_size(button_width, 16 + 8); + button.set_max_size(button_width, 16 + 8); + button.set_min_size(shrunken_width, 16 + 8); Segment segment { icon, text, data, button_width, shrunken_width, button.make_weak_ptr() }; @@ -178,11 +179,11 @@ void Breadcrumbbar::relayout() for (auto& segment : m_segments) { if (remaining_width > width() && !segment.button->is_checked()) { - segment.button->set_fixed_width(segment.shrunken_width); + segment.button->set_preferred_width(segment.shrunken_width); remaining_width -= (segment.width - segment.shrunken_width); continue; } - segment.button->set_fixed_width(segment.width); + segment.button->set_preferred_width(segment.width); } }