diff --git a/src/controllers/FloatingWindow.cpp b/src/controllers/FloatingWindow.cpp index 5a11a925..708fcc4b 100644 --- a/src/controllers/FloatingWindow.cpp +++ b/src/controllers/FloatingWindow.cpp @@ -525,9 +525,10 @@ LayoutSaver::FloatingWindow FloatingWindow::serialize() const fw.affinities = affinities(); fw.windowState = windowStateOverride(); - auto parentView = view()->parentView(); - auto mainWindow = parentView ? parentView->asMainWindowController() : nullptr; - fw.parentIndex = mainWindow ? DockRegistry::self()->mainwindows().indexOf(mainWindow) : -1; + Window::Ptr window = view()->window(); + Window::Ptr transientParentWindow = window ? window->transientParent() : nullptr; + auto transientMainWindow = transientParentWindow ? DockRegistry::self()->mainWindowForHandle(transientParentWindow) : nullptr; + fw.parentIndex = transientMainWindow ? DockRegistry::self()->mainwindows().indexOf(transientMainWindow) : -1; return fw; } diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index 9a1d5b98..c0074494 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -182,6 +182,8 @@ void TestDocks::tst_restoreSimple() QVERIFY(fw2->isVisible()); QVERIFY(fw2->view()->isRootView()); QCOMPARE(fw2->pos(), dock2FloatingPoint); + + QVERIFY(fw2->view()->window()->transientParent()); QVERIFY(m->view()->window()->equals(fw2->view()->window()->transientParent())); QVERIFY(dock2->isFloating()); QVERIFY(dock2->isVisible());