From 4d0d38aca2db1f30d31daf0fcb5b7f72aaf4ab4a Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Tue, 24 Aug 2021 10:00:51 -0700 Subject: [PATCH] toolbar: force minimum width Improves usability on screens with less height --- app/widget/toolbar/toolbar.cpp | 21 +++++++++++++++++---- app/widget/toolbar/toolbar.h | 2 ++ 2 files changed, 19 insertions(+), 4 deletions(-) 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