diff --git a/src/private/Frame.cpp b/src/private/Frame.cpp index 22b97074..1298b0e2 100644 --- a/src/private/Frame.cpp +++ b/src/private/Frame.cpp @@ -168,6 +168,69 @@ void Frame::removeWidget(DockWidgetBase *dw) removeWidget_impl(dw); } +void Frame::detachTab(DockWidgetBase *dw) +{ + if (m_inCtor || m_beingDeleted) return; + + detachTab_impl(dw); +} + +int Frame::indexOfDockWidget(DockWidgetBase *dw) +{ + if (m_inCtor || m_beingDeleted) return -1; + + return indexOfDockWidget_impl(dw); +} + +int Frame::currentIndex() const +{ + if (m_inCtor || m_beingDeleted) return -1; + + return currentIndex_impl(); +} + +void Frame::setCurrentTabIndex(int index) +{ + if (m_inCtor || m_beingDeleted) return; + + setCurrentTabIndex_impl(index); +} + +void Frame::setCurrentDockWidget(DockWidgetBase *dw) +{ + if (m_inCtor || m_beingDeleted) return; + + setCurrentDockWidget_impl(dw); +} + +void Frame::insertDockWidget(DockWidgetBase *dw, int index) +{ + if (m_inCtor || m_beingDeleted) return; + + insertDockWidget_impl(dw, index); +} + +DockWidgetBase *Frame::dockWidgetAt(int index) const +{ + if (m_inCtor || m_beingDeleted) return nullptr; + + return dockWidgetAt_impl(index); +} + +DockWidgetBase *Frame::currentDockWidget() const +{ + if (m_inCtor || m_beingDeleted) return nullptr; + + return currentDockWidget_impl(); +} + +int Frame::dockWidgetCount() const +{ + if (m_inCtor || m_beingDeleted) return 0; + + return dockWidgetCount_impl(); +} + void Frame::onDockWidgetCountChanged() { qCDebug(docking) << "Frame::onDockWidgetCountChanged:" << this << "; widgetCount=" << dockWidgetCount(); diff --git a/src/private/Frame_p.h b/src/private/Frame_p.h index 2fe5aac7..86f2ba36 100644 --- a/src/private/Frame_p.h +++ b/src/private/Frame_p.h @@ -85,31 +85,31 @@ public: void removeWidget(DockWidgetBase *); ///@brief detaches this dock widget - virtual void detachTab(DockWidgetBase *) = 0; + void detachTab(DockWidgetBase *); ///@brief returns the index of the specified dock widget - virtual int indexOfDockWidget(DockWidgetBase *) = 0; + int indexOfDockWidget(DockWidgetBase *); ///@brief returns the index of the current tab - virtual int currentIndex() const = 0; + int currentIndex() const; ///@brief sets the current tab index - virtual void setCurrentTabIndex(int index) = 0; + void setCurrentTabIndex(int index); ///@brief Sets the specified dock widget to be the current tab - virtual void setCurrentDockWidget(DockWidgetBase *) = 0; + void setCurrentDockWidget(DockWidgetBase *); ///@brief Inserts a dock widget into the specified index - virtual void insertDockWidget(DockWidgetBase *, int index) = 0; + void insertDockWidget(DockWidgetBase *, int index); /// @brief Returns the dock widget at @p index - virtual DockWidgetBase *dockWidgetAt(int index) const = 0; + DockWidgetBase *dockWidgetAt(int index) const; ///@brief Returns the current dock widget - virtual DockWidgetBase *currentDockWidget() const = 0; + DockWidgetBase *currentDockWidget() const; /// @brief returns the number of dock widgets inside the frame - virtual int dockWidgetCount() const = 0; + int dockWidgetCount() const; void updateTitleAndIcon(); void updateTitleBarVisibility(); @@ -250,6 +250,15 @@ protected: QSize biggestDockWidgetMaxSize() const; virtual void removeWidget_impl(DockWidgetBase *) = 0; + virtual void detachTab_impl(DockWidgetBase *) = 0; + virtual int indexOfDockWidget_impl(DockWidgetBase *) = 0; + virtual int currentIndex_impl() const = 0; + virtual void setCurrentTabIndex_impl(int index) = 0; + virtual void setCurrentDockWidget_impl(DockWidgetBase *) = 0; + virtual void insertDockWidget_impl(DockWidgetBase *, int index) = 0; + virtual DockWidgetBase *dockWidgetAt_impl(int index) const = 0; + virtual DockWidgetBase *currentDockWidget_impl() const = 0; + virtual int dockWidgetCount_impl() const = 0; private: Q_DISABLE_COPY(Frame) diff --git a/src/private/widgets/FrameWidget.cpp b/src/private/widgets/FrameWidget.cpp index ee6e9ae1..6e4eef68 100644 --- a/src/private/widgets/FrameWidget.cpp +++ b/src/private/widgets/FrameWidget.cpp @@ -88,27 +88,27 @@ QSize FrameWidget::maxSizeHint() const return waste + biggestDockWidgetMaxSize(); } -void FrameWidget::detachTab(DockWidgetBase *dw) +void FrameWidget::detachTab_impl(DockWidgetBase *dw) { m_tabWidget->detachTab(dw); } -int FrameWidget::indexOfDockWidget(DockWidgetBase *dw) +int FrameWidget::indexOfDockWidget_impl(DockWidgetBase *dw) { return m_tabWidget->indexOfDockWidget(dw); } -void FrameWidget::setCurrentDockWidget(DockWidgetBase *dw) +void FrameWidget::setCurrentDockWidget_impl(DockWidgetBase *dw) { m_tabWidget->setCurrentDockWidget(dw); } -int FrameWidget::currentIndex() const +int FrameWidget::currentIndex_impl() const { return m_tabWidget->currentIndex(); } -void FrameWidget::insertDockWidget(DockWidgetBase *dw, int index) +void FrameWidget::insertDockWidget_impl(DockWidgetBase *dw, int index) { m_tabWidget->insertDockWidget(dw, index); } @@ -118,17 +118,17 @@ void FrameWidget::removeWidget_impl(DockWidgetBase *dw) m_tabWidget->removeDockWidget(dw); } -void FrameWidget::setCurrentTabIndex(int index) +void FrameWidget::setCurrentTabIndex_impl(int index) { m_tabWidget->setCurrentDockWidget(index); } -DockWidgetBase *FrameWidget::currentDockWidget() const +DockWidgetBase *FrameWidget::currentDockWidget_impl() const { return m_tabWidget->dockwidgetAt(m_tabWidget->currentIndex()); } -DockWidgetBase *FrameWidget::dockWidgetAt(int index) const +DockWidgetBase *FrameWidget::dockWidgetAt_impl(int index) const { return qobject_cast(m_tabWidget->dockwidgetAt(index)); } @@ -144,7 +144,7 @@ TabWidget *FrameWidget::tabWidget() const return m_tabWidget; } -int FrameWidget::dockWidgetCount() const +int FrameWidget::dockWidgetCount_impl() const { return m_tabWidget->numDockWidgets(); } diff --git a/src/private/widgets/FrameWidget_p.h b/src/private/widgets/FrameWidget_p.h index f867fb3d..d239cf51 100644 --- a/src/private/widgets/FrameWidget_p.h +++ b/src/private/widgets/FrameWidget_p.h @@ -47,16 +47,16 @@ public: protected: void paintEvent(QPaintEvent *) override; QSize maxSizeHint() const override; - void detachTab(DockWidgetBase *) override; - int indexOfDockWidget(DockWidgetBase *) override; - void setCurrentDockWidget(DockWidgetBase *) override; - int currentIndex() const override; - void insertDockWidget(DockWidgetBase *, int index) override; + void detachTab_impl(DockWidgetBase *) override; + int indexOfDockWidget_impl(DockWidgetBase *) override; + void setCurrentDockWidget_impl(DockWidgetBase *) override; + int currentIndex_impl() const override; + void insertDockWidget_impl(DockWidgetBase *, int index) override; void removeWidget_impl(DockWidgetBase *) override; - void setCurrentTabIndex(int) override; - DockWidgetBase *currentDockWidget() const override; - DockWidgetBase *dockWidgetAt(int index) const override; - int dockWidgetCount() const override; + void setCurrentTabIndex_impl(int) override; + DockWidgetBase *currentDockWidget_impl() const override; + DockWidgetBase *dockWidgetAt_impl(int index) const override; + int dockWidgetCount_impl() const override; private: friend class TestDocks; TabWidget *const m_tabWidget;