diff --git a/src/LayoutSaver.cpp b/src/LayoutSaver.cpp index 61545624..2590394d 100644 --- a/src/LayoutSaver.cpp +++ b/src/LayoutSaver.cpp @@ -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) diff --git a/src/Window.h b/src/Window.h index 1cc00d99..485c9e71 100644 --- a/src/Window.h +++ b/src/Window.h @@ -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 other) const = 0; diff --git a/src/qtcommon/Window_qt.cpp b/src/qtcommon/Window_qt.cpp index c1dadeec..07d3c1d7 100644 --- a/src/qtcommon/Window_qt.cpp +++ b/src/qtcommon/Window_qt.cpp @@ -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); +} diff --git a/src/qtcommon/Window_qt.h b/src/qtcommon/Window_qt.h index eb034142..7614038c 100644 --- a/src/qtcommon/Window_qt.h +++ b/src/qtcommon/Window_qt.h @@ -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 diff --git a/src/qtquick/Window_qtquick.h b/src/qtquick/Window_qtquick.h index bdf5eec6..c9923026 100644 --- a/src/qtquick/Window_qtquick.h +++ b/src/qtquick/Window_qtquick.h @@ -22,4 +22,5 @@ public: std::shared_ptr rootView() const override; Window::Ptr transientParent() const override; }; -} \ No newline at end of file + +} diff --git a/src/qtwidgets/Window_qtwidgets.cpp b/src/qtwidgets/Window_qtwidgets.cpp index 0fe969e3..2cde872c 100644 --- a/src/qtwidgets/Window_qtwidgets.cpp +++ b/src/qtwidgets/Window_qtwidgets.cpp @@ -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); + } +} diff --git a/src/qtwidgets/Window_qtwidgets.h b/src/qtwidgets/Window_qtwidgets.h index ec2cac20..07f9fabf 100644 --- a/src/qtwidgets/Window_qtwidgets.h +++ b/src/qtwidgets/Window_qtwidgets.h @@ -23,6 +23,8 @@ public: ~Window_qtwidgets() override; std::shared_ptr rootView() const override; Window::Ptr transientParent() const override; + void setGeometry(QRect) const override; + void setVisible(bool) override; }; }