┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphintabbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dolphintabbar.cpp')
-rw-r--r--src/dolphintabbar.cpp42
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) {