summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp')
-rw-r--r--src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp
index 4236f395cb..1889d05a29 100644
--- a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp
+++ b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp
@@ -44,6 +44,14 @@
#include <stdint.h>
+#include <QDebug>
+#include <QEvent>
+#include <QCoreApplication>
+
+const struct wl_windowmanager_listener QWaylandWindowManagerIntegration::mWindowManagerListener = {
+ QWaylandWindowManagerIntegration::wlHandleOnScreenVisibilityChange,
+};
+
QWaylandWindowManagerIntegration *QWaylandWindowManagerIntegration::createIntegration(QWaylandDisplay *waylandDisplay)
{
return new QWaylandWindowManagerIntegration(waylandDisplay);
@@ -72,7 +80,9 @@ void QWaylandWindowManagerIntegration::wlHandleListenerGlobal(wl_display *displa
{
if (strcmp(interface, "wl_windowmanager") == 0) {
QWaylandWindowManagerIntegration *integration = static_cast<QWaylandWindowManagerIntegration *>(data);
- integration->mWaylandWindowManager = wl_windowmanager_create(display, id);
+ integration->mWaylandWindowManager = wl_windowmanager_create(display, id, 1);
+
+ wl_windowmanager_add_listener(integration->mWaylandWindowManager, &mWindowManagerListener, integration);
}
}
@@ -90,3 +100,14 @@ void QWaylandWindowManagerIntegration::authenticateWithToken(const QByteArray &t
if (mWaylandWindowManager)
wl_windowmanager_authenticate_with_token(mWaylandWindowManager, authToken.constData());
}
+
+void QWaylandWindowManagerIntegration::wlHandleOnScreenVisibilityChange(void *data, struct wl_windowmanager *wl_windowmanager, int visible)
+{
+ QWaylandWindowManagerIntegration *integration = (QWaylandWindowManagerIntegration *)data;
+
+ QEvent evt(visible != 0 ? QEvent::ApplicationActivated : QEvent::ApplicationDeactivated);
+
+ QCoreApplication::sendEvent(QCoreApplication::instance(), &evt);
+
+ qDebug() << "OnScreenVisibility" << (visible != 0);
+}