diff --git a/app/widget/toolbar/toolbar.cpp b/app/widget/toolbar/toolbar.cpp index 383d753e2..5b08edce7 100644 --- a/app/widget/toolbar/toolbar.cpp +++ b/app/widget/toolbar/toolbar.cpp @@ -20,10 +20,11 @@ #include "toolbar.h" -#include -#include #include #include +#include +#include +#include #include "node/factory.h" #include "ui/icons/icons.h" @@ -31,8 +32,10 @@ namespace olive { +#define super QWidget + Toolbar::Toolbar(QWidget *parent) : - QWidget(parent) + super(parent) { layout_ = new FlowLayout(this); layout_->setMargin(0); @@ -88,7 +91,17 @@ void Toolbar::changeEvent(QEvent *e) } else if (e->type() == QEvent::StyleChange) { UpdateIcons(); } - QWidget::changeEvent(e); + super::changeEvent(e); +} + +void Toolbar::resizeEvent(QResizeEvent *e) +{ + super::resizeEvent(e); + + int min_height = toolbar_btns_.size() * toolbar_btns_.first()->height() + (toolbar_btns_.size()-1) * layout_->verticalSpacing(); + int new_height = e->size().height(); + int columns_required = min_height / new_height + (min_height % new_height != 0); + setMinimumWidth(toolbar_btns_.first()->width() * columns_required + layout_->horizontalSpacing() * (columns_required-1) + 1); } void Toolbar::Retranslate() diff --git a/app/widget/toolbar/toolbar.h b/app/widget/toolbar/toolbar.h index 6324e7a6b..271af43d6 100644 --- a/app/widget/toolbar/toolbar.h +++ b/app/widget/toolbar/toolbar.h @@ -89,6 +89,8 @@ protected: */ virtual void changeEvent(QEvent* e) override; + virtual void resizeEvent(QResizeEvent *e) override; + signals: /** * @brief Emitted whenever a tool is selected using this widget