qtquick: Fix setting of transient parent window

We need to go through Window, not through View.
This even makes things cleaner, as parentView() shouldn't go across
window boundaries. That's the case for QtWidgets but it's not consistent
with QtQuick. Our View abstraction has saner rules
This commit is contained in:
Sergio Martins
2022-06-05 14:12:22 +01:00
parent f9efe2755e
commit 7e3a82ed3e
2 changed files with 6 additions and 3 deletions

View File

@@ -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;
}

View File

@@ -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());