Re-add support for reordering tabs
And this time, implement the state in the controllers.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -22,5 +22,10 @@ TabBarViewInterface::TabBarViewInterface(Controllers::TabBar *controller)
|
||||
|
||||
TabBarViewInterface::~TabBarViewInterface() = default;
|
||||
|
||||
void TabBarViewInterface::setTabsAreMovable(bool)
|
||||
{
|
||||
// Not implemented by default
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user