diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c index 42a6fb8509..0753d70d50 100644 --- a/gdk/wayland/gdkdisplay-wayland.c +++ b/gdk/wayland/gdkdisplay-wayland.c @@ -410,6 +410,7 @@ gdk_registry_handle_global (void *data, else if (strcmp (interface, "xdg_wm_base") == 0) { display_wayland->xdg_wm_base_id = id; + display_wayland->xdg_wm_base_version = version; } else if (strcmp (interface, "zxdg_shell_v6") == 0) { @@ -651,7 +652,8 @@ _gdk_wayland_display_open (const gchar *display_name) display_wayland->xdg_wm_base = wl_registry_bind (display_wayland->wl_registry, display_wayland->xdg_wm_base_id, - &xdg_wm_base_interface, 1); + &xdg_wm_base_interface, + MIN (display_wayland->xdg_wm_base_version, 6)); xdg_wm_base_add_listener (display_wayland->xdg_wm_base, &xdg_wm_base_listener, display_wayland); diff --git a/gdk/wayland/gdkdisplay-wayland.h b/gdk/wayland/gdkdisplay-wayland.h index 925476a781..b91df7668b 100644 --- a/gdk/wayland/gdkdisplay-wayland.h +++ b/gdk/wayland/gdkdisplay-wayland.h @@ -77,6 +77,7 @@ struct _GdkWaylandDisplay guint32 serial; uint32_t xdg_wm_base_id; + int xdg_wm_base_version; uint32_t zxdg_shell_v6_id; GdkWaylandShellVariant shell_variant; diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c index 9c0264e71b..815a28014e 100644 --- a/gdk/wayland/gdkwindow-wayland.c +++ b/gdk/wayland/gdkwindow-wayland.c @@ -1874,6 +1874,18 @@ xdg_toplevel_configure (void *data, break; case XDG_TOPLEVEL_STATE_RESIZING: break; + case XDG_TOPLEVEL_STATE_TILED_TOP: + pending_state |= (GDK_WINDOW_STATE_TILED | GDK_WINDOW_STATE_TOP_TILED); + break; + case XDG_TOPLEVEL_STATE_TILED_RIGHT: + pending_state |= (GDK_WINDOW_STATE_TILED | GDK_WINDOW_STATE_RIGHT_TILED); + break; + case XDG_TOPLEVEL_STATE_TILED_BOTTOM: + pending_state |= (GDK_WINDOW_STATE_TILED | GDK_WINDOW_STATE_BOTTOM_TILED); + break; + case XDG_TOPLEVEL_STATE_TILED_LEFT: + pending_state |= (GDK_WINDOW_STATE_TILED | GDK_WINDOW_STATE_LEFT_TILED); + break; default: /* Unknown state */ break; @@ -1893,9 +1905,26 @@ xdg_toplevel_close (void *data, gdk_wayland_window_handle_close (window); } +static void +xdg_toplevel_configure_bounds (void *data, + struct xdg_toplevel *xdg_toplevel, + int32_t width, + int32_t height) +{ +} + +static void +xdg_toplevel_wm_capabilities (void *data, + struct xdg_toplevel *xdg_toplevel, + struct wl_array *capabilities) +{ +} + static const struct xdg_toplevel_listener xdg_toplevel_listener = { xdg_toplevel_configure, xdg_toplevel_close, + xdg_toplevel_configure_bounds, + xdg_toplevel_wm_capabilities, }; static void