diff options
6 files changed, 37 insertions, 1 deletions
diff --git a/src/compositor/compositor_api/qwaylandsurface.h b/src/compositor/compositor_api/qwaylandsurface.h index 01479273b..5349f89f6 100644 --- a/src/compositor/compositor_api/qwaylandsurface.h +++ b/src/compositor/compositor_api/qwaylandsurface.h @@ -173,7 +173,8 @@ signals: void extendedSurfaceReady(); void classNameChanged(); void titleChanged(); - + void raiseRequested(); + void lowerRequested(); }; QT_END_NAMESPACE diff --git a/src/compositor/wayland_wrapper/qwlextendedsurface.cpp b/src/compositor/wayland_wrapper/qwlextendedsurface.cpp index 3ab886489..0f6ce8caa 100644 --- a/src/compositor/wayland_wrapper/qwlextendedsurface.cpp +++ b/src/compositor/wayland_wrapper/qwlextendedsurface.cpp @@ -161,6 +161,16 @@ void ExtendedSurface::extended_surface_destroy_resource(Resource *) delete this; } +void ExtendedSurface::extended_surface_raise(Resource *) +{ + emit m_surface->waylandSurface()->raiseRequested(); +} + +void ExtendedSurface::extended_surface_lower(Resource *) +{ + emit m_surface->waylandSurface()->lowerRequested(); +} + } QT_END_NAMESPACE diff --git a/src/compositor/wayland_wrapper/qwlextendedsurface_p.h b/src/compositor/wayland_wrapper/qwlextendedsurface_p.h index a28ed1b59..4ce34ced6 100644 --- a/src/compositor/wayland_wrapper/qwlextendedsurface_p.h +++ b/src/compositor/wayland_wrapper/qwlextendedsurface_p.h @@ -114,6 +114,8 @@ private: int32_t flags) Q_DECL_OVERRIDE; void extended_surface_destroy_resource(Resource *) Q_DECL_OVERRIDE; + void extended_surface_raise(Resource *) Q_DECL_OVERRIDE; + void extended_surface_lower(Resource *) Q_DECL_OVERRIDE; }; } diff --git a/src/extensions/surface-extension.xml b/src/extensions/surface-extension.xml index ccc65795b..a2c9688c0 100644 --- a/src/extensions/surface-extension.xml +++ b/src/extensions/surface-extension.xml @@ -84,5 +84,11 @@ <arg name="flags" type="int"/> </request> + <request name="raise"> + </request> + + <request name="lower"> + </request> + </interface> </protocol> diff --git a/src/plugins/platforms/wayland_common/qwaylandwindow.cpp b/src/plugins/platforms/wayland_common/qwaylandwindow.cpp index f00198025..93357bd58 100644 --- a/src/plugins/platforms/wayland_common/qwaylandwindow.cpp +++ b/src/plugins/platforms/wayland_common/qwaylandwindow.cpp @@ -196,6 +196,20 @@ void QWaylandWindow::setVisible(bool visible) } +void QWaylandWindow::raise() +{ + if (mExtendedWindow) + mExtendedWindow->raise(); +} + + +void QWaylandWindow::lower() +{ + if (mExtendedWindow) + mExtendedWindow->lower(); +} + + bool QWaylandWindow::isExposed() const { if (!window()->isVisible()) diff --git a/src/plugins/platforms/wayland_common/qwaylandwindow.h b/src/plugins/platforms/wayland_common/qwaylandwindow.h index d318c1d5d..b62155c45 100644 --- a/src/plugins/platforms/wayland_common/qwaylandwindow.h +++ b/src/plugins/platforms/wayland_common/qwaylandwindow.h @@ -133,6 +133,9 @@ public: void setWindowState(Qt::WindowState state); void setWindowFlags(Qt::WindowFlags flags); + void raise() Q_DECL_OVERRIDE; + void lower() Q_DECL_OVERRIDE; + bool isExposed() const; QWaylandDecoration *decoration() const; |