diff --git a/Userland/Libraries/LibGUI/Toolbar.cpp b/Userland/Libraries/LibGUI/Toolbar.cpp index daca0bd235..3e0801d9c0 100644 --- a/Userland/Libraries/LibGUI/Toolbar.cpp +++ b/Userland/Libraries/LibGUI/Toolbar.cpp @@ -181,13 +181,13 @@ ErrorOr Toolbar::update_overflow_menu() Optional marginal_index {}; auto position { 0 }; auto is_horizontal { m_orientation == Gfx::Orientation::Horizontal }; - auto margin { is_horizontal ? layout()->margins().right() : layout()->margins().bottom() }; + auto margin { is_horizontal ? layout()->margins().horizontal_total() : layout()->margins().vertical_total() }; auto toolbar_size { is_horizontal ? width() : height() }; for (size_t i = 0; i < m_items.size() - 1; ++i) { auto& item = m_items.at(i); auto item_size = is_horizontal ? item.widget->width() : item.widget->height(); - if (position + item_size + m_button_size + margin > toolbar_size) { + if (position + item_size + margin > toolbar_size) { marginal_index = i; break; } @@ -203,6 +203,18 @@ ErrorOr Toolbar::update_overflow_menu() return {}; } + if (marginal_index.value() > 0) { + for (size_t i = marginal_index.value() - 1; i > 0; --i) { + auto& item = m_items.at(i); + auto item_size = is_horizontal ? item.widget->width() : item.widget->height(); + if (position + m_button_size + margin <= toolbar_size) + break; + item.widget->set_visible(false); + position -= item_size; + marginal_index = i; + } + } + if (m_grouped) { for (size_t i = marginal_index.value(); i > 0; --i) { auto& item = m_items.at(i);