diff --git a/Libraries/LibGUI/ToolBarContainer.cpp b/Libraries/LibGUI/ToolBarContainer.cpp index 4a453cacbe..ce961b38e1 100644 --- a/Libraries/LibGUI/ToolBarContainer.cpp +++ b/Libraries/LibGUI/ToolBarContainer.cpp @@ -58,17 +58,28 @@ void ToolBarContainer::did_add_toolbar(Widget& toolbar) recompute_preferred_size(); } +void ToolBarContainer::custom_layout() +{ + recompute_preferred_size(); +} + void ToolBarContainer::recompute_preferred_size() { - int preferred_size = 4 + (m_toolbars.size() - 1) * 2; + int visible_toolbar_count = 0; + int preferred_size = 4; for (auto& toolbar : m_toolbars) { + if (!toolbar.is_visible()) + continue; + ++visible_toolbar_count; if (m_orientation == Gfx::Orientation::Horizontal) preferred_size += toolbar.preferred_size().height(); else preferred_size += toolbar.preferred_size().width(); } + preferred_size += (visible_toolbar_count - 1) * 2; + if (m_orientation == Gfx::Orientation::Horizontal) set_preferred_size(0, preferred_size); else diff --git a/Libraries/LibGUI/ToolBarContainer.h b/Libraries/LibGUI/ToolBarContainer.h index e624700249..4a49ac6b8e 100644 --- a/Libraries/LibGUI/ToolBarContainer.h +++ b/Libraries/LibGUI/ToolBarContainer.h @@ -38,6 +38,7 @@ public: private: explicit ToolBarContainer(Gfx::Orientation = Gfx::Orientation::Horizontal); + virtual void custom_layout() override; virtual void paint_event(GUI::PaintEvent&) override; virtual void child_event(Core::ChildEvent&) override;