diff --git a/src/controllers/TabBar.cpp b/src/controllers/TabBar.cpp index 1bee2640..de1f2f84 100644 --- a/src/controllers/TabBar.cpp +++ b/src/controllers/TabBar.cpp @@ -32,6 +32,7 @@ Controllers::TabBar::TabBar(Stack *tabWidget) , m_tabWidget(tabWidget) { view()->init(); + dynamic_cast(view())->setTabsAreMovable(tabsAreMovable()); } Controllers::TabBar::~TabBar() @@ -40,7 +41,7 @@ Controllers::TabBar::~TabBar() bool Controllers::TabBar::tabsAreMovable() const { - return dynamic_cast(view())->tabsAreMovable(); + return Config::self().flags() & Config::Flag_AllowReorderTabs; } bool Controllers::TabBar::dragCanStart(QPoint pressPos, QPoint pos) const diff --git a/src/dummy/views/TabBar_dummy.cpp b/src/dummy/views/TabBar_dummy.cpp index e1e56c62..29c73d93 100644 --- a/src/dummy/views/TabBar_dummy.cpp +++ b/src/dummy/views/TabBar_dummy.cpp @@ -59,8 +59,3 @@ void TabBar_dummy::moveTabTo(int from, int to) Q_UNUSED(to); // Not implemented yet } - -bool TabBar_dummy::tabsAreMovable() const -{ - return false; -} diff --git a/src/dummy/views/TabBar_dummy.h b/src/dummy/views/TabBar_dummy.h index b1c13227..77ef83ab 100644 --- a/src/dummy/views/TabBar_dummy.h +++ b/src/dummy/views/TabBar_dummy.h @@ -46,7 +46,6 @@ public: QRect rectForTab(int index) const override; void moveTabTo(int from, int to) override; - bool tabsAreMovable() const override; protected: void init() override; diff --git a/src/qtquick/views/TabBar_qtquick.cpp b/src/qtquick/views/TabBar_qtquick.cpp index 52e0687b..02c28b01 100644 --- a/src/qtquick/views/TabBar_qtquick.cpp +++ b/src/qtquick/views/TabBar_qtquick.cpp @@ -134,11 +134,6 @@ void TabBar_qtquick::moveTabTo(int from, int to) // Not implemented yet } -bool TabBar_qtquick::tabsAreMovable() const -{ - return false; -} - bool TabBar_qtquick::tabBarAutoHide() const { return m_tabBar->stack()->tabBarAutoHide(); diff --git a/src/qtquick/views/TabBar_qtquick.h b/src/qtquick/views/TabBar_qtquick.h index 7c6c4ffc..e65a9556 100644 --- a/src/qtquick/views/TabBar_qtquick.h +++ b/src/qtquick/views/TabBar_qtquick.h @@ -57,7 +57,6 @@ public: void moveTabTo(int from, int to) override; Q_INVOKABLE void setCurrentIndex(int index) override; - bool tabsAreMovable() const override; Stack_qtquick *stackView() const; void renameTab(int index, const QString &) override; void changeTabIcon(int index, const QIcon &icon) override; diff --git a/src/qtwidgets/views/TabBar_qtwidgets.cpp b/src/qtwidgets/views/TabBar_qtwidgets.cpp index 0b084e80..920a2be9 100644 --- a/src/qtwidgets/views/TabBar_qtwidgets.cpp +++ b/src/qtwidgets/views/TabBar_qtwidgets.cpp @@ -130,11 +130,6 @@ void TabBar_qtwidgets::moveTabTo(int from, int to) moveTab(from, to); } -bool TabBar_qtwidgets::tabsAreMovable() const -{ - return isMovable(); -} - void TabBar_qtwidgets::tabInserted(int index) { QTabBar::tabInserted(index); @@ -183,3 +178,8 @@ void TabBar_qtwidgets::insertDockWidget(int index, Controllers::DockWidget *dw, auto tabWidget = static_cast(View_qt::asQWidget(m_tabBar->stack())); tabWidget->insertTab(index, View_qt::asQWidget(dw), icon, title); } + +void TabBar_qtwidgets::setTabsAreMovable(bool are) +{ + QTabBar::setMovable(are); +} diff --git a/src/qtwidgets/views/TabBar_qtwidgets.h b/src/qtwidgets/views/TabBar_qtwidgets.h index 648adcb6..1a9524e4 100644 --- a/src/qtwidgets/views/TabBar_qtwidgets.h +++ b/src/qtwidgets/views/TabBar_qtwidgets.h @@ -42,7 +42,6 @@ public: QRect rectForTab(int index) const override; void moveTabTo(int from, int to) override; - bool tabsAreMovable() const override; int tabAt(QPoint localPos) const override; void renameTab(int index, const QString &) override; void changeTabIcon(int index, const QIcon &icon) override; @@ -50,6 +49,7 @@ public: void insertDockWidget(int index, Controllers::DockWidget *, const QIcon &, const QString &title) override; QTabWidget *tabWidget() const; + void setTabsAreMovable(bool) override; Q_SIGNALS: void dockWidgetInserted(int index); diff --git a/src/views/TabBarViewInterface.cpp b/src/views/TabBarViewInterface.cpp index 76b33122..994b990a 100644 --- a/src/views/TabBarViewInterface.cpp +++ b/src/views/TabBarViewInterface.cpp @@ -22,5 +22,10 @@ TabBarViewInterface::TabBarViewInterface(Controllers::TabBar *controller) TabBarViewInterface::~TabBarViewInterface() = default; +void TabBarViewInterface::setTabsAreMovable(bool) +{ + // Not implemented by default +} + } // namespace diff --git a/src/views/TabBarViewInterface.h b/src/views/TabBarViewInterface.h index 7fbfa9dc..319fb01d 100644 --- a/src/views/TabBarViewInterface.h +++ b/src/views/TabBarViewInterface.h @@ -35,7 +35,11 @@ class DOCKS_EXPORT TabBarViewInterface public: explicit TabBarViewInterface(Controllers::TabBar *); virtual ~TabBarViewInterface(); - virtual bool tabsAreMovable() const = 0; + + /// @brief Implement if your frontend will support reordering tabs with mouse + /// Currently only the QtWidgets frontend supports it + virtual void setTabsAreMovable(bool); + virtual int tabAt(QPoint localPt) const = 0; virtual void moveTabTo(int from, int to) = 0; virtual QRect rectForTab(int index) const = 0;