From c6b693b4ac50ea2b845d430c546ed684b88441f6 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sat, 15 Apr 2023 00:31:10 +0200 Subject: [PATCH] Reduze status label column to minimum size --- src/general.cpp | 1 + src/utils/utility.cpp | 30 ++++++++++++++++++++++++++++++ src/utils/utility.hpp | 1 + 3 files changed, 32 insertions(+) diff --git a/src/general.cpp b/src/general.cpp index 31718623..64880b2a 100644 --- a/src/general.cpp +++ b/src/general.cpp @@ -1074,6 +1074,7 @@ void AdvSceneSwitcher::setupGeneralTab() // as otherwise it could block user input statusControl->hide(); + MinimizeSizeOfColumn(ui->statusLayout, 0); setWindowTitle(windowTitle() + " - " + g_GIT_TAG); } diff --git a/src/utils/utility.cpp b/src/utils/utility.cpp index 33dd28b1..8ed482c4 100644 --- a/src/utils/utility.cpp +++ b/src/utils/utility.cpp @@ -250,6 +250,36 @@ void setLayoutVisible(QLayout *layout, bool visible) } } +void MinimizeSizeOfColumn(QGridLayout *layout, int idx) +{ + if (idx >= layout->columnCount()) { + return; + } + + for (int i = 0; i < layout->columnCount(); i++) { + if (i == idx) { + layout->setColumnStretch(i, 0); + } else { + layout->setColumnStretch(i, 1); + } + } + + int columnWidth = 0; + for (int row = 0; row < layout->rowCount(); row++) { + auto item = layout->itemAtPosition(row, idx); + if (!item) { + continue; + } + auto widget = item->widget(); + if (!widget) { + continue; + } + columnWidth = std::max(columnWidth, + widget->minimumSizeHint().width()); + } + layout->setColumnMinimumWidth(idx, columnWidth); +} + bool compareIgnoringLineEnding(QString &s1, QString &s2) { // Let QT deal with different types of lineendings diff --git a/src/utils/utility.hpp b/src/utils/utility.hpp index 863b3a00..5571cc36 100644 --- a/src/utils/utility.hpp +++ b/src/utils/utility.hpp @@ -89,6 +89,7 @@ void placeWidgets(std::string text, QBoxLayout *layout, void deleteLayoutItemWidget(QLayoutItem *item); void clearLayout(QLayout *layout, int afterIdx = 0); void setLayoutVisible(QLayout *layout, bool visible); +void MinimizeSizeOfColumn(QGridLayout *layout, int idx); QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, QColor endColor = QColor(0, 0, 0, 0), bool once = false);