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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user