summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandxdgsurface.cpp
diff options
context:
space:
mode:
authorPhilippe Coval <philippe.coval@open.eurogiciel.org>2014-06-10 16:22:17 +0200
committerPhilippe Coval <rzr@gna.org>2014-06-20 13:52:38 +0200
commit4bac130b97fbaa565aa9883eb302557ef0185d50 (patch)
tree9bc1e72dab7ea574719b67fb47306ea95d4260c7 /src/client/qwaylandxdgsurface.cpp
parentb3a493786accafc5771d8242ee558b87265aa8f2 (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.cpp60
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