Add Frame::detachTab()
The tab widget will be an implementation detail of FrameWidget and not accessed by anyone
This commit is contained in:
@@ -254,14 +254,14 @@ void DockWidgetBase::setFloating(bool floats)
|
||||
if (floats) {
|
||||
d->saveTabIndex();
|
||||
if (isTabbed()) {
|
||||
TabWidget *tabWidget= d->parentTabWidget();
|
||||
if (!tabWidget) {
|
||||
qWarning() << "DockWidget::setFloating: Tabbed but no tabbar exists"
|
||||
auto frame = this->frame();
|
||||
if (!frame) {
|
||||
qWarning() << "DockWidget::setFloating: Tabbed but no frame exists"
|
||||
<< this;
|
||||
Q_ASSERT(false);
|
||||
}
|
||||
|
||||
tabWidget->detachTab(this);
|
||||
frame->detachTab(this);
|
||||
} else {
|
||||
frame()->titleBar()->makeWindow();
|
||||
}
|
||||
|
||||
@@ -85,6 +85,9 @@ public:
|
||||
///@brief removes a dockwidget from the frame
|
||||
void removeWidget(DockWidgetBase *);
|
||||
|
||||
///@brief detaches this dock widget
|
||||
virtual void detachTab(DockWidgetBase *) = 0;
|
||||
|
||||
void updateTitleAndIcon();
|
||||
void updateTitleBarVisibility();
|
||||
bool containsMouse(QPoint globalPos) const;
|
||||
|
||||
@@ -83,6 +83,11 @@ QSize FrameWidget::maxSizeHint() const
|
||||
return waste + biggestDockWidgetMaxSize();
|
||||
}
|
||||
|
||||
void FrameWidget::detachTab(DockWidgetBase *dw)
|
||||
{
|
||||
tabWidget()->detachTab(dw);
|
||||
}
|
||||
|
||||
QTabBar *FrameWidget::tabBar() const
|
||||
{
|
||||
auto tw = static_cast<QTabWidget*>(tabWidget()->asWidget());
|
||||
|
||||
@@ -42,6 +42,7 @@ public:
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *) override;
|
||||
QSize maxSizeHint() const override;
|
||||
void detachTab(DockWidgetBase *) override;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -2367,7 +2367,7 @@ void TestDocks::tst_setFloatingAfterDraggedFromTabToSideBySide()
|
||||
|
||||
|
||||
// Detach tab
|
||||
dock1->frame()->m_tabWidget->detachTab(dock2);
|
||||
dock1->frame()->detachTab(dock2);
|
||||
QVERIFY(layout->checkSanity());
|
||||
auto fw2 = dock2->floatingWindow();
|
||||
QVERIFY(fw2);
|
||||
@@ -4345,7 +4345,7 @@ void TestDocks::tst_invalidLayoutAfterRestore()
|
||||
|
||||
// Detach dock2
|
||||
QPointer<Frame> f2 = dock2->frame();
|
||||
f2->m_tabWidget->detachTab(dock2);
|
||||
f2->detachTab(dock2);
|
||||
QVERIFY(!f2.data());
|
||||
QTest::qWait(200); // Not sure why. Some event we're waiting for. TODO: Investigate
|
||||
auto fw2 = dock2->floatingWindow();
|
||||
|
||||
Reference in New Issue
Block a user