diff options
| author | Nicolai Sehrt <[email protected]> | 2026-01-31 15:57:43 +0000 |
|---|---|---|
| committer | Méven Car <[email protected]> | 2026-01-31 15:57:43 +0000 |
| commit | 31b7abd81f7e01d5c8575373dc18bb4edddf74c5 (patch) | |
| tree | f1b69c6735ccc4a364a2bd50930ed2ad02cd4dd1 /src/dolphintabbar.cpp | |
| parent | d54fb877d7a875d1f1bcb37782410ba92ecc4890 (diff) | |
tab settings: add tab style
Add a Full Width option and a Fixed Size option.
This removes the current behavior of adapting to tab name, i.e folder name.
Diffstat (limited to 'src/dolphintabbar.cpp')
| -rw-r--r-- | src/dolphintabbar.cpp | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/dolphintabbar.cpp b/src/dolphintabbar.cpp index 4df25263f..b2a305a27 100644 --- a/src/dolphintabbar.cpp +++ b/src/dolphintabbar.cpp @@ -5,7 +5,7 @@ */ #include "dolphintabbar.h" - +#include "dolphin_generalsettings.h" #include <KLocalizedString> #include <QDragEnterEvent> @@ -53,6 +53,34 @@ DolphinTabBar::DolphinTabBar(QWidget *parent) m_autoActivationTimer->setSingleShot(true); m_autoActivationTimer->setInterval(800); connect(m_autoActivationTimer, &QTimer::timeout, this, &DolphinTabBar::slotAutoActivationTimeout); + connect(GeneralSettings::self(), &GeneralSettings::tabBarChanged, this, &DolphinTabBar::slotTabBarChanged); + + QTimer::singleShot(0, this, &DolphinTabBar::slotTabBarChanged); +} + +QSize DolphinTabBar::tabSizeHint(int index) const +{ + if (GeneralSettings::tabStyle() == GeneralSettings::EnumTabStyle::FixedSize) { + QSize defaultSize = QTabBar::tabSizeHint(index); + defaultSize.setWidth(225); + return defaultSize; + } else if (GeneralSettings::tabStyle() == GeneralSettings::EnumTabStyle::FullWidth && count() > 0) { + QSize defaultSize = QTabBar::tabSizeHint(index); + defaultSize.setWidth(qMax(25, width() / count())); + return defaultSize; + } + return QTabBar::tabSizeHint(index); +} + +QSize DolphinTabBar::minimumSizeHint() const +{ + QSize s = QTabBar::minimumSizeHint(); + + if (GeneralSettings::tabStyle() != GeneralSettings::EnumTabStyle::FixedSize) { + s.setWidth(0); // allow shrinking + } + + return s; } void DolphinTabBar::dragEnterEvent(QDragEnterEvent *event) @@ -190,6 +218,18 @@ void DolphinTabBar::contextMenuEvent(QContextMenuEvent *event) QTabBar::contextMenuEvent(event); } +void DolphinTabBar::slotTabBarChanged() +{ + if (GeneralSettings::tabStyle() == GeneralSettings::EnumTabStyle::FixedSize) { + setExpanding(false); + setUsesScrollButtons(true); + } else if (GeneralSettings::tabStyle() == GeneralSettings::EnumTabStyle::FullWidth) { + setExpanding(true); + setUsesScrollButtons(false); + } + updateGeometry(); +} + void DolphinTabBar::slotAutoActivationTimeout() { if (m_autoActivationIndex >= 0) { |
