Normalize how we set top level window geometry
Prefer Window API, since for QtQuick the root view isn't so tighly coupled with the QWindow as in QWidgets world. Hide the difference in Window_qtwidgets.cpp, which now prefers the QWidget API whenever possible, as that's better tested than using QWindow direclty.
This commit is contained in:
@@ -590,8 +590,8 @@ void LayoutSaver::Private::deserializeWindowGeometry(const T &saved, View *topLe
|
||||
|
||||
Controllers::FloatingWindow::ensureRectIsOnScreen(geometry);
|
||||
|
||||
topLevel->setGeometry(geometry);
|
||||
topLevel->setVisible(saved.isVisible);
|
||||
topLevel->window()->setGeometry(geometry);
|
||||
topLevel->window()->setVisible(saved.isVisible);
|
||||
}
|
||||
|
||||
LayoutSaver::Private::Private(RestoreOptions options)
|
||||
|
||||
@@ -38,6 +38,7 @@ public:
|
||||
virtual void setProperty(const char *name, const QVariant &value) = 0;
|
||||
virtual QVariant property(const char *name) const = 0;
|
||||
virtual bool isVisible() const = 0;
|
||||
virtual void setVisible(bool) = 0;
|
||||
virtual WId handle() const = 0;
|
||||
virtual bool equals(std::shared_ptr<Window> other) const = 0;
|
||||
|
||||
|
||||
@@ -154,7 +154,12 @@ void Window_qt::startSystemMove()
|
||||
m_window->startSystemMove();
|
||||
}
|
||||
|
||||
void KDDockWidgets::Window_qt::setGeometry(QRect geo) const
|
||||
void Window_qt::setGeometry(QRect geo) const
|
||||
{
|
||||
m_window->setGeometry(geo);
|
||||
}
|
||||
|
||||
void Window_qt::setVisible(bool is)
|
||||
{
|
||||
m_window->setVisible(is);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ public:
|
||||
QRect geometry() const override;
|
||||
void setGeometry(QRect) const override;
|
||||
bool isVisible() const override;
|
||||
void setVisible(bool) override;
|
||||
WId handle() const override;
|
||||
|
||||
// TODOm3: Remove
|
||||
|
||||
@@ -22,4 +22,5 @@ public:
|
||||
std::shared_ptr<ViewWrapper> rootView() const override;
|
||||
Window::Ptr transientParent() const override;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -57,3 +57,25 @@ Window::Ptr Window_qtwidgets::transientParent() const
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Window_qtwidgets::setGeometry(QRect geo) const
|
||||
{
|
||||
if (auto v = rootView()) {
|
||||
// In QWidget world QWidget interface is prefered over QWindow
|
||||
v->setGeometry(geo);
|
||||
} else {
|
||||
// Go via QWindow instead
|
||||
Window_qt::setGeometry(geo);
|
||||
}
|
||||
}
|
||||
|
||||
void Window_qtwidgets::setVisible(bool is)
|
||||
{
|
||||
if (auto v = rootView()) {
|
||||
// In QWidget world QWidget interface is prefered over QWindow
|
||||
v->setVisible(is);
|
||||
} else {
|
||||
// Go via QWindow instead
|
||||
Window_qt::setVisible(is);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,8 @@ public:
|
||||
~Window_qtwidgets() override;
|
||||
std::shared_ptr<ViewWrapper> rootView() const override;
|
||||
Window::Ptr transientParent() const override;
|
||||
void setGeometry(QRect) const override;
|
||||
void setVisible(bool) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user