diff options
author | Philippe Coval <philippe.coval@open.eurogiciel.org> | 2014-06-10 16:22:17 +0200 |
---|---|---|
committer | Philippe Coval <rzr@gna.org> | 2014-06-20 13:52:38 +0200 |
commit | 4bac130b97fbaa565aa9883eb302557ef0185d50 (patch) | |
tree | 9bc1e72dab7ea574719b67fb47306ea95d4260c7 /src/client/qwaylandxdgsurface.cpp | |
parent | b3a493786accafc5771d8242ee558b87265aa8f2 (diff) |
xdg-shell: upgrade to support current version (weston-1.5.0)
The protocol file is a raw copy of
Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.5.0
Task-number: QTBUG-38633/related
Change-Id: I41ca2f89c09a8b6348ce2fbf6d59f44b4c8134df
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
Reviewed-by: Philippe Coval <rzr@gna.org>
Diffstat (limited to 'src/client/qwaylandxdgsurface.cpp')
-rw-r--r-- | src/client/qwaylandxdgsurface.cpp | 60 |
1 files changed, 47 insertions, 13 deletions
diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp index 1b8affacf..5fb74d25b 100644 --- a/src/client/qwaylandxdgsurface.cpp +++ b/src/client/qwaylandxdgsurface.cpp @@ -87,23 +87,25 @@ void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice) void QWaylandXdgSurface::setMaximized() { - m_maximized = true; - m_size = m_window->window()->geometry().size(); - set_maximized(); + if (!m_maximized) + request_change_state(XDG_SURFACE_STATE_MAXIMIZED, true, 0); } void QWaylandXdgSurface::setFullscreen() { - m_fullscreen = true; - m_size = m_window->window()->geometry().size(); - set_fullscreen(); + if (!m_fullscreen) + request_change_state(XDG_SURFACE_STATE_FULLSCREEN, true, 0); } void QWaylandXdgSurface::setNormal() { if (m_fullscreen || m_maximized || m_minimized) { - if (m_maximized) { unset_maximized(); } - if (m_fullscreen) { unset_fullscreen(); } + if (m_maximized) { + request_change_state(XDG_SURFACE_STATE_MAXIMIZED, false, 0); + } + if (m_fullscreen) { + request_change_state(XDG_SURFACE_STATE_FULLSCREEN, false, 0); + } m_fullscreen = m_maximized = m_minimized = false; setTopLevel(); @@ -158,16 +160,48 @@ void QWaylandXdgSurface::setAppId(const QString & appId) return QtWayland::xdg_surface::set_app_id(appId); } -void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial) +void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height) { - pong(serial); + m_window->configure(0 , width, height); } -void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width, - int32_t height) +void QWaylandXdgSurface::xdg_surface_change_state(uint32_t state, + uint32_t value, + uint32_t serial) { - m_window->configure(edges, width, height); + + if (state == XDG_SURFACE_STATE_MAXIMIZED + || state == XDG_SURFACE_STATE_FULLSCREEN) { + if (value) { + m_size = m_window->window()->geometry().size(); + } else { + QMargins m = m_window->frameMargins(); + m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); + } + } + + switch (state) { + case XDG_SURFACE_STATE_MAXIMIZED: + m_maximized = value; + break; + case XDG_SURFACE_STATE_FULLSCREEN: + m_fullscreen = value; + break; + } + + xdg_surface_ack_change_state(object(), state, value, serial); } +void QWaylandXdgSurface::xdg_surface_activated() +{ +} + +void QWaylandXdgSurface::xdg_surface_deactivated() +{ +} + +void QWaylandXdgSurface::xdg_surface_close() +{ +} QT_END_NAMESPACE |