diff --git a/src/controllers/TitleBar.cpp b/src/controllers/TitleBar.cpp index ff49a41a..9250f07f 100644 --- a/src/controllers/TitleBar.cpp +++ b/src/controllers/TitleBar.cpp @@ -499,7 +499,7 @@ Controllers::DockWidget *TitleBar::singleDockWidget() const bool TitleBar::isFloating() const { if (m_floatingWindow) - return m_floatingWindow->hasSingleDockWidget(); // Debatable! Maybe it's always floating. + return true; if (m_frame) return m_frame->isFloating(); diff --git a/src/controllers/TitleBar.h b/src/controllers/TitleBar.h index 491e9a20..087024b3 100644 --- a/src/controllers/TitleBar.h +++ b/src/controllers/TitleBar.h @@ -41,7 +41,7 @@ public: void setTitle(const QString &title); QString title() const; - ///@brief Returns true if the dock widget which has this title bar is floating + ///@brief Returns true if this title-bar is the title bar of a floating window bool isFloating() const; ///@brief the list of dockwidgets under this TitleBar. diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index ec0b699f..c50cfe25 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -6263,6 +6263,23 @@ void TestDocks::tst_persistentCentralWidget() QVERIFY(saver.restoreLayout(saved)); } +void TestDocks::tst_unfloatTabbedFloatingWidgets() +{ + auto m = createMainWindow(QSize(1000, 1000), MainWindowOption_None); + auto dock0 = createDockWidget("0", Platform::instance()->tests_createView({ true })); + auto dock1 = createDockWidget("1", Platform::instance()->tests_createView({ true })); + m->addDockWidget(dock0, Location_OnLeft); + dock0->addDockWidgetAsTab(dock1); + + dock0->titleBar()->onFloatClicked(); + QVERIFY(dock0->titleBar()->isFloating()); + QVERIFY(!dock0->mainWindow()); + + dock0->titleBar()->onFloatClicked(); + QVERIFY(!dock0->titleBar()->isFloating()); + QVERIFY(dock0->mainWindow()); +} + int main(int argc, char *argv[]) { int exitCode = 0; diff --git a/tests/tst_docks.h b/tests/tst_docks.h index a1757dfc..16f1e245 100644 --- a/tests/tst_docks.h +++ b/tests/tst_docks.h @@ -145,6 +145,7 @@ private Q_SLOTS: void tst_fairResizeAfterRemoveWidget(); void tst_invalidJSON_data(); void tst_invalidJSON(); + void tst_unfloatTabbedFloatingWidgets(); void tst_invalidPlaceholderPosition_data(); void tst_invalidPlaceholderPosition();