From 31b7abd81f7e01d5c8575373dc18bb4edddf74c5 Mon Sep 17 00:00:00 2001 From: Nicolai Sehrt Date: Sat, 31 Jan 2026 15:57:43 +0000 Subject: 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. --- src/dolphintabbar.cpp | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'src/dolphintabbar.cpp') 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 #include @@ -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) { -- cgit v1.3