diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2012-02-22 10:52:54 +0100 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2012-02-23 09:19:43 +0100 |
commit | 2912e378393111677a985a0bd4353a06fbabc5ee (patch) | |
tree | 5c451476f46da144ab2a5e15ad46befed1753e66 /src/plugins/platforms/wayland/windowmanager_integration | |
parent | f9413889531c21b56e3b512c264c5dc9a85f8c74 (diff) |
Support ShowIsFullScreen in plugin and compositor.
Added way of controlling client side style hint ShowIsFullScreen from
compositor, and added support in plugin for the WindowFullScreen state.
Change-Id: I60efa5692b26e9a4079c3c2fb66eb72b67badd02
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Diffstat (limited to 'src/plugins/platforms/wayland/windowmanager_integration')
2 files changed, 28 insertions, 2 deletions
diff --git a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp index a98ffdfc9..3e2507e8e 100644 --- a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp +++ b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp @@ -61,20 +61,20 @@ public: QWaylandDisplay *m_waylandDisplay; struct wl_windowmanager *m_waylandWindowManager; QHash<QWindow*, QVariantMap> m_queuedProperties; - + bool m_showIsFullScreen; }; QWaylandWindowManagerIntegrationPrivate::QWaylandWindowManagerIntegrationPrivate(QWaylandDisplay *waylandDisplay) : m_blockPropertyUpdates(false) , m_waylandDisplay(waylandDisplay) , m_waylandWindowManager(0) + , m_showIsFullScreen(false) { } QWaylandWindowManagerIntegration *QWaylandWindowManagerIntegration::m_instance = 0; - QWaylandWindowManagerIntegration *QWaylandWindowManagerIntegration::createIntegration(QWaylandDisplay *waylandDisplay) { return new QWaylandWindowManagerIntegration(waylandDisplay); @@ -106,6 +106,12 @@ struct wl_windowmanager *QWaylandWindowManagerIntegration::windowManager() const return d->m_waylandWindowManager; } +bool QWaylandWindowManagerIntegration::showIsFullScreen() const +{ + Q_D(const QWaylandWindowManagerIntegration); + return d->m_showIsFullScreen; +} + void QWaylandWindowManagerIntegration::wlHandleListenerGlobal(wl_display *display, uint32_t id, const char *interface, uint32_t version, void *data) { Q_UNUSED(version); @@ -113,9 +119,21 @@ void QWaylandWindowManagerIntegration::wlHandleListenerGlobal(wl_display *displa QWaylandWindowManagerIntegration *integration = static_cast<QWaylandWindowManagerIntegration *>(data); integration->d_ptr->m_waylandWindowManager = static_cast<struct wl_windowmanager *>(wl_display_bind(display, id, &wl_windowmanager_interface)); + wl_windowmanager_add_listener(integration->d_ptr->m_waylandWindowManager, &windowmanager_listener, integration); } } +const struct wl_windowmanager_listener QWaylandWindowManagerIntegration::windowmanager_listener = { + QWaylandWindowManagerIntegration::handle_hints +}; + +void QWaylandWindowManagerIntegration::handle_hints(void *data, wl_windowmanager *ext, int32_t showIsFullScreen) +{ + Q_UNUSED(ext); + QWaylandWindowManagerIntegration *self = static_cast<QWaylandWindowManagerIntegration *>(data); + self->d_func()->m_showIsFullScreen = showIsFullScreen; +} + void QWaylandWindowManagerIntegration::mapClientToProcess(long long processId) { Q_D(QWaylandWindowManagerIntegration); diff --git a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h index af93eac4b..cfb4df799 100644 --- a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h +++ b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h @@ -68,6 +68,8 @@ public: void mapClientToProcess(long long processId); void authenticateWithToken(const QByteArray &token = QByteArray()); + bool showIsFullScreen() const; + private: static void wlHandleListenerGlobal(wl_display *display, uint32_t id, const char *interface, uint32_t version, void *data); @@ -76,6 +78,12 @@ private: QScopedPointer<QWaylandWindowManagerIntegrationPrivate> d_ptr; static QWaylandWindowManagerIntegration *m_instance; + static const struct wl_windowmanager_listener windowmanager_listener; + + static void handle_hints(void *data, + struct wl_windowmanager *ext, + int32_t showIsFullScreen); + static const struct wl_windowmanager_listener m_windowManagerListener; }; |