Re-add support for reordering tabs

And this time, implement the state in the controllers.
This commit is contained in:
Sergio Martins
2022-08-15 21:22:53 +01:00
parent 65b0b7e140
commit 63ae96a919
9 changed files with 18 additions and 20 deletions

View File

@@ -32,6 +32,7 @@ Controllers::TabBar::TabBar(Stack *tabWidget)
, m_tabWidget(tabWidget)
{
view()->init();
dynamic_cast<Views::TabBarViewInterface *>(view())->setTabsAreMovable(tabsAreMovable());
}
Controllers::TabBar::~TabBar()
@@ -40,7 +41,7 @@ Controllers::TabBar::~TabBar()
bool Controllers::TabBar::tabsAreMovable() const
{
return dynamic_cast<Views::TabBarViewInterface *>(view())->tabsAreMovable();
return Config::self().flags() & Config::Flag_AllowReorderTabs;
}
bool Controllers::TabBar::dragCanStart(QPoint pressPos, QPoint pos) const

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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();

View File

@@ -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;

View File

@@ -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<QTabWidget *>(View_qt::asQWidget(m_tabBar->stack()));
tabWidget->insertTab(index, View_qt::asQWidget(dw), icon, title);
}
void TabBar_qtwidgets::setTabsAreMovable(bool are)
{
QTabBar::setMovable(are);
}

View File

@@ -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);

View File

@@ -22,5 +22,10 @@ TabBarViewInterface::TabBarViewInterface(Controllers::TabBar *controller)
TabBarViewInterface::~TabBarViewInterface() = default;
void TabBarViewInterface::setTabsAreMovable(bool)
{
// Not implemented by default
}
} // namespace

View File

@@ -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;