diff --git a/src/app/ui/toolbar.cpp b/src/app/ui/toolbar.cpp index 1a3eef037..c1cfefd65 100644 --- a/src/app/ui/toolbar.cpp +++ b/src/app/ui/toolbar.cpp @@ -125,18 +125,6 @@ bool ToolBar::isToolVisible(Tool* tool) bool ToolBar::onProcessMessage(Message* msg) { switch (msg->type()) { - case kPaintMessage: { - auto toolbox = App::instance()->toolBox(); - auto lastToolBounds = getToolGroupBounds(toolbox->getGroupsCount()); - int minHeight = lastToolBounds.y + lastToolBounds.h; - - if (minHeight != m_minHeight) { - m_minHeight = minHeight; - invalidate(); - } - break; - } - case kMouseDownMessage: { auto mouseMsg = static_cast(msg); const Point mousePos = mouseMsg->positionForDisplay(display()); @@ -332,6 +320,18 @@ void ToolBar::onSizeHint(SizeHintEvent& ev) } } +void ToolBar::onResize(ui::ResizeEvent& ev) +{ + Widget::onResize(ev); + + auto* toolbox = App::instance()->toolBox(); + auto lastToolBounds = getToolGroupBounds(toolbox->getGroupsCount()); + m_minHeight = lastToolBounds.y2() - + origin().y + // Preview and timeline buttons + + 2 * (getToolIconSize(this).h - 1) + 3 * guiscale(); +} + void ToolBar::onPaint(ui::PaintEvent& ev) { gfx::Rect bounds = clientBounds(); @@ -676,9 +676,9 @@ int ToolBar::getHiddenGroups() const auto* toolbox = App::instance()->toolBox(); const int height = size().h; if (height < m_minHeight) { - int hidden = (m_minHeight - height) / getToolIconSize(this).h; + int hidden = (m_minHeight - height) / (getToolIconSize(this).h - 1 * guiscale()); if (hidden >= 1) - return std::clamp(hidden + 1, 2, toolbox->getGroupsCount() - 1); + return std::clamp(hidden + 1, 2, toolbox->getGroupsCount()); } return 0; } diff --git a/src/app/ui/toolbar.h b/src/app/ui/toolbar.h index 9b1f988ea..f534fe7af 100644 --- a/src/app/ui/toolbar.h +++ b/src/app/ui/toolbar.h @@ -1,4 +1,5 @@ // Aseprite +// Copyright (C) 2025 Igara Studio S.A. // Copyright (C) 2001-2018 David Capello // // This program is distributed under the terms of @@ -54,6 +55,7 @@ public: protected: bool onProcessMessage(ui::Message* msg) override; void onSizeHint(ui::SizeHintEvent& ev) override; + void onResize(ui::ResizeEvent& ev) override; void onPaint(ui::PaintEvent& ev) override; void onVisible(bool visible) override;