diff --git a/src/dummy/views/Stack_dummy.cpp b/src/dummy/views/Stack_dummy.cpp index 2f156dfc..b1618525 100644 --- a/src/dummy/views/Stack_dummy.cpp +++ b/src/dummy/views/Stack_dummy.cpp @@ -37,12 +37,3 @@ Stack_dummy::Stack_dummy(Controllers::Stack *controller, QWidget *parent) void Stack_dummy::init() { } - -void Stack_dummy::setDocumentMode(bool) -{ -} - -bool Stack_dummy::isPositionDraggable(QPoint) const -{ - return true; -} diff --git a/src/dummy/views/Stack_dummy.h b/src/dummy/views/Stack_dummy.h index a2aefa40..9b78b548 100644 --- a/src/dummy/views/Stack_dummy.h +++ b/src/dummy/views/Stack_dummy.h @@ -22,10 +22,7 @@ class DOCKS_EXPORT Stack_dummy : public View_dummy, public StackViewInterface { public: explicit Stack_dummy(Controllers::Stack *controller, QWidget *parent = nullptr); - - bool isPositionDraggable(QPoint p) const override; void init() override; - void setDocumentMode(bool) override; private: Q_DISABLE_COPY(Stack_dummy) diff --git a/src/qtquick/views/Group_qtquick.cpp b/src/qtquick/views/Group_qtquick.cpp index 4f6cd4db..71fdcd76 100644 --- a/src/qtquick/views/Group_qtquick.cpp +++ b/src/qtquick/views/Group_qtquick.cpp @@ -203,12 +203,6 @@ TabBar_qtquick *Group_qtquick::tabBarView() const return nullptr; } -QRect Group_qtquick::dragRect() const -{ - qFatal("Not implemented"); - return {}; -} - KDDockWidgets::Views::TitleBar_qtquick *Group_qtquick::titleBar() const { if (auto tb = m_group->titleBar()) { diff --git a/src/qtquick/views/Group_qtquick.h b/src/qtquick/views/Group_qtquick.h index 017f2785..c36f60d0 100644 --- a/src/qtquick/views/Group_qtquick.h +++ b/src/qtquick/views/Group_qtquick.h @@ -56,7 +56,6 @@ public: /// @brief Returns the QQuickItem which represents this group on the screen QQuickItem *visualItem() const override; - QRect dragRect() const override; int currentIndex() const; // QML interface: diff --git a/src/qtquick/views/Stack_qtquick.cpp b/src/qtquick/views/Stack_qtquick.cpp index bb8f910f..9431431b 100644 --- a/src/qtquick/views/Stack_qtquick.cpp +++ b/src/qtquick/views/Stack_qtquick.cpp @@ -61,17 +61,6 @@ Controllers::Stack *Stack_qtquick::stack() const return m_stack; } -void Stack_qtquick::setDocumentMode(bool) -{ - qDebug() << "Not implemented"; -} - -bool Stack_qtquick::isPositionDraggable(QPoint p) const -{ - Q_UNUSED(p); - return true; -} - QObject *Stack_qtquick::tabBarViewObj() const { return View_qt::asQObject(m_stack->tabBar()->view()); diff --git a/src/qtquick/views/Stack_qtquick.h b/src/qtquick/views/Stack_qtquick.h index 6a36ee30..6e502cd8 100644 --- a/src/qtquick/views/Stack_qtquick.h +++ b/src/qtquick/views/Stack_qtquick.h @@ -49,7 +49,6 @@ public: explicit Stack_qtquick(Controllers::Stack *controller, QQuickItem *parent = nullptr); DockWidgetModel *dockWidgetModel() const; - void setDocumentMode(bool) override; Controllers::DockWidget *currentDockWidget() const; /// @brief Returns the tab bar as a QObject for QML. @@ -68,7 +67,6 @@ Q_SIGNALS: void tabBarAutoHideChanged(); protected: - bool isPositionDraggable(QPoint p) const override; void init() override; private: diff --git a/src/views/GroupViewInterface.cpp b/src/views/GroupViewInterface.cpp index b3cdc041..2596774c 100644 --- a/src/views/GroupViewInterface.cpp +++ b/src/views/GroupViewInterface.cpp @@ -34,6 +34,11 @@ Controllers::Group *GroupViewInterface::group() const return m_group; } +QRect GroupViewInterface::dragRect() const +{ + return {}; +} + void GroupViewInterface::removeDockWidget(Controllers::DockWidget *dw) { m_group->tabBar()->removeDockWidget(dw); diff --git a/src/views/GroupViewInterface.h b/src/views/GroupViewInterface.h index a54839b6..33b21e49 100644 --- a/src/views/GroupViewInterface.h +++ b/src/views/GroupViewInterface.h @@ -15,8 +15,6 @@ QT_BEGIN_NAMESPACE -class QString; -class QIcon; class QRect; QT_END_NAMESPACE @@ -39,7 +37,11 @@ public: virtual void insertDockWidget(Controllers::DockWidget *, int index); virtual int nonContentsHeight() const = 0; - virtual QRect dragRect() const = 0; + + /// @brief the rect that should start a drag. + /// Only relevant if the title bar isn't visible. For normal KDDW usage this method doesn't + /// need to be reimplemented. + virtual QRect dragRect() const; bool isMDI() const; Controllers::Group *group() const; diff --git a/src/views/StackViewInterface.cpp b/src/views/StackViewInterface.cpp index c9e9e9e9..a3e997b1 100644 --- a/src/views/StackViewInterface.cpp +++ b/src/views/StackViewInterface.cpp @@ -22,4 +22,14 @@ StackViewInterface::StackViewInterface(Controllers::Stack *controller) StackViewInterface::~StackViewInterface() = default; -} // namespace +bool StackViewInterface::isPositionDraggable(QPoint) const +{ + return true; +} + +void StackViewInterface::setDocumentMode(bool) +{ + /// Only QtWidgets reimplements this +} + +} diff --git a/src/views/StackViewInterface.h b/src/views/StackViewInterface.h index 060c563d..7afaca9a 100644 --- a/src/views/StackViewInterface.h +++ b/src/views/StackViewInterface.h @@ -15,8 +15,6 @@ QT_BEGIN_NAMESPACE class QPoint; -class QIcon; -class QString; QT_END_NAMESPACE namespace KDDockWidgets { @@ -27,14 +25,23 @@ class Stack; namespace Views { -/// @brief The interface that Stack views should implement +/// @brief The interface that Stack views share class DOCKS_EXPORT StackViewInterface { public: explicit StackViewInterface(Controllers::Stack *); virtual ~StackViewInterface(); - virtual bool isPositionDraggable(QPoint p) const = 0; - virtual void setDocumentMode(bool) = 0; + + /// @brief Reimplement if you want to support dragging by QTabWidget instead of TitleBar + /// This is only implemented by QtWidgets. + /// Instead of reimplementing this, consider reimplementing + /// TabBarViewInterface::isPositionDraggable() instead. This exists only because the background + /// of QTabBar is the QTabWidget, which probably isn't true for other frontends. + virtual bool isPositionDraggable(QPoint p) const; + + /// @brief Sets QTabWidget::documentMode(). Only implemented for QtWidgets. + /// Probably not interesting for other frontends to implement, therefore it's not pure-virtual. + virtual void setDocumentMode(bool); protected: Controllers::Stack *const m_stack;