-#include "wayland-client-core.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @page page_xdg_shell_unstable_v5 The xdg_shell_unstable_v5 protocol
- * @section page_ifaces_xdg_shell_unstable_v5 Interfaces
- * - @subpage page_iface_xdg_shell_v5 - create desktop-style surfaces
- * - @subpage page_iface_xdg_surface_v5 - A desktop window
- * - @subpage page_iface_xdg_popup_v5 - short-lived, popup surfaces for menus
- * @section page_copyright_xdg_shell_unstable_v5 Copyright
- *
- *
- * Copyright © 2008-2013 Kristian Høgsberg
- * Copyright © 2013 Rafael Antognolli
- * Copyright © 2013 Jasper St. Pierre
- * Copyright © 2010-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- */
-struct wl_output;
-struct wl_seat;
-struct wl_surface;
-struct xdg_popup_v5;
-struct xdg_shell_v5;
-struct xdg_surface_v5;
-
-/**
- * @page page_iface_xdg_shell_v5 xdg_shell
- * @section page_iface_xdg_shell_desc Description
- *
- * xdg_shell_v5 allows clients to turn a wl_surface into a "real window"
- * which can be dragged, resized, stacked, and moved around by the
- * user. Everything about this interface is suited towards traditional
- * desktop environments.
- * @section page_iface_xdg_shell_api API
- * See @ref iface_xdg_shell.
- */
-/**
- * @defgroup iface_xdg_shell_v5 The xdg_shell_v5 interface
- *
- * xdg_shell_v5 allows clients to turn a wl_surface into a "real window"
- * which can be dragged, resized, stacked, and moved around by the
- * user. Everything about this interface is suited towards traditional
- * desktop environments.
- */
-extern const struct wl_interface xdg_shell_v5_interface;
-/**
- * @page page_iface_xdg_surface_v5 xdg_surface
- * @section page_iface_xdg_surface_desc Description
- *
- * An interface that may be implemented by a wl_surface, for
- * implementations that provide a desktop-style user interface.
- *
- * It provides requests to treat surfaces like windows, allowing to set
- * properties like maximized, fullscreen, minimized, and to move and resize
- * them, and associate metadata like title and app id.
- *
- * The client must call wl_surface.commit on the corresponding wl_surface
- * for the xdg_surface_v5 state to take effect. Prior to committing the new
- * state, it can set up initial configuration, such as maximizing or setting
- * a window geometry.
- *
- * Even without attaching a buffer the compositor must respond to initial
- * committed configuration, for instance sending a configure event with
- * expected window geometry if the client maximized its surface during
- * initialization.
- *
- * For a surface to be mapped by the compositor the client must have
- * committed both an xdg_surface_v5 state and a buffer.
- * @section page_iface_xdg_surface_api API
- * See @ref iface_xdg_surface.
- */
-/**
- * @defgroup iface_xdg_surface_v5 The xdg_surface_v5 interface
- *
- * An interface that may be implemented by a wl_surface, for
- * implementations that provide a desktop-style user interface.
- *
- * It provides requests to treat surfaces like windows, allowing to set
- * properties like maximized, fullscreen, minimized, and to move and resize
- * them, and associate metadata like title and app id.
- *
- * The client must call wl_surface.commit on the corresponding wl_surface
- * for the xdg_surface_v5 state to take effect. Prior to committing the new
- * state, it can set up initial configuration, such as maximizing or setting
- * a window geometry.
- *
- * Even without attaching a buffer the compositor must respond to initial
- * committed configuration, for instance sending a configure event with
- * expected window geometry if the client maximized its surface during
- * initialization.
- *
- * For a surface to be mapped by the compositor the client must have
- * committed both an xdg_surface_v5 state and a buffer.
- */
-extern const struct wl_interface xdg_surface_v5_interface;
-/**
- * @page page_iface_xdg_popup_v5 xdg_popup
- * @section page_iface_xdg_popup_desc Description
- *
- * A popup surface is a short-lived, temporary surface that can be
- * used to implement menus. It takes an explicit grab on the surface
- * that will be dismissed when the user dismisses the popup. This can
- * be done by the user clicking outside the surface, using the keyboard,
- * or even locking the screen through closing the lid or a timeout.
- *
- * When the popup is dismissed, a popup_done event will be sent out,
- * and at the same time the surface will be unmapped. The xdg_popup
- * object is now inert and cannot be reactivated, so clients should
- * destroy it. Explicitly destroying the xdg_popup_v5 object will also
- * dismiss the popup and unmap the surface.
- *
- * Clients will receive events for all their surfaces during this
- * grab (which is an "owner-events" grab in X11 parlance). This is
- * done so that users can navigate through submenus and other
- * "nested" popup windows without having to dismiss the topmost
- * popup.
- *
- * Clients that want to dismiss the popup when another surface of
- * their own is clicked should dismiss the popup using the destroy
- * request.
- *
- * The parent surface must have either an xdg_surface_v5 or xdg_popup
- * role.
- *
- * Specifying an xdg_popup_v5 for the parent means that the popups are
- * nested, with this popup now being the topmost popup. Nested
- * popups must be destroyed in the reverse order they were created
- * in, e.g. the only popup you are allowed to destroy at all times
- * is the topmost one.
- *
- * If there is an existing popup when creating a new popup, the
- * parent must be the current topmost popup.
- *
- * A parent surface must be mapped before the new popup is mapped.
- *
- * When compositors choose to dismiss a popup, they will likely
- * dismiss every nested popup as well. When a compositor dismisses
- * popups, it will follow the same dismissing order as required
- * from the client.
- *
- * The x and y arguments passed when creating the popup object specify
- * where the top left of the popup should be placed, relative to the
- * local surface coordinates of the parent surface. See
- * xdg_shell.get_xdg_popup.
- *
- * The client must call wl_surface.commit on the corresponding wl_surface
- * for the xdg_popup_v5 state to take effect.
- *
- * For a surface to be mapped by the compositor the client must have
- * committed both the xdg_popup_v5 state and a buffer.
- * @section page_iface_xdg_popup_api API
- * See @ref iface_xdg_popup.
- */
-/**
- * @defgroup iface_xdg_popup_v5 The xdg_popup_v5 interface
- *
- * A popup surface is a short-lived, temporary surface that can be
- * used to implement menus. It takes an explicit grab on the surface
- * that will be dismissed when the user dismisses the popup. This can
- * be done by the user clicking outside the surface, using the keyboard,
- * or even locking the screen through closing the lid or a timeout.
- *
- * When the popup is dismissed, a popup_done event will be sent out,
- * and at the same time the surface will be unmapped. The xdg_popup
- * object is now inert and cannot be reactivated, so clients should
- * destroy it. Explicitly destroying the xdg_popup_v5 object will also
- * dismiss the popup and unmap the surface.
- *
- * Clients will receive events for all their surfaces during this
- * grab (which is an "owner-events" grab in X11 parlance). This is
- * done so that users can navigate through submenus and other
- * "nested" popup windows without having to dismiss the topmost
- * popup.
- *
- * Clients that want to dismiss the popup when another surface of
- * their own is clicked should dismiss the popup using the destroy
- * request.
- *
- * The parent surface must have either an xdg_surface_v5 or xdg_popup
- * role.
- *
- * Specifying an xdg_popup_v5 for the parent means that the popups are
- * nested, with this popup now being the topmost popup. Nested
- * popups must be destroyed in the reverse order they were created
- * in, e.g. the only popup you are allowed to destroy at all times
- * is the topmost one.
- *
- * If there is an existing popup when creating a new popup, the
- * parent must be the current topmost popup.
- *
- * A parent surface must be mapped before the new popup is mapped.
- *
- * When compositors choose to dismiss a popup, they will likely
- * dismiss every nested popup as well. When a compositor dismisses
- * popups, it will follow the same dismissing order as required
- * from the client.
- *
- * The x and y arguments passed when creating the popup object specify
- * where the top left of the popup should be placed, relative to the
- * local surface coordinates of the parent surface. See
- * xdg_shell.get_xdg_popup.
- *
- * The client must call wl_surface.commit on the corresponding wl_surface
- * for the xdg_popup_v5 state to take effect.
- *
- * For a surface to be mapped by the compositor the client must have
- * committed both the xdg_popup_v5 state and a buffer.
- */
-extern const struct wl_interface xdg_popup_v5_interface;
-
-#ifndef XDG_SHELL_VERSION_ENUM
-#define XDG_SHELL_VERSION_ENUM
-/**
- * @ingroup iface_xdg_shell
- * latest protocol version
- *
- * The 'current' member of this enum gives the version of the
- * protocol. Implementations can compare this to the version
- * they implement using static_assert to ensure the protocol and
- * implementation versions match.
- */
-enum xdg_shell_version {
- /**
- * Always the latest version
- */
- XDG_SHELL_VERSION_CURRENT = 5,
-};
-#endif /* XDG_SHELL_VERSION_ENUM */
-
-#ifndef XDG_SHELL_ERROR_ENUM
-#define XDG_SHELL_ERROR_ENUM
-enum xdg_shell_error {
- /**
- * given wl_surface has another role
- */
- XDG_SHELL_ERROR_ROLE = 0,
- /**
- * xdg_shell_v5 was destroyed before children
- */
- XDG_SHELL_ERROR_DEFUNCT_SURFACES = 1,
- /**
- * the client tried to map or destroy a non-topmost popup
- */
- XDG_SHELL_ERROR_NOT_THE_TOPMOST_POPUP = 2,
- /**
- * the client specified an invalid popup parent surface
- */
- XDG_SHELL_ERROR_INVALID_POPUP_PARENT = 3,
-};
-#endif /* XDG_SHELL_ERROR_ENUM */
-
-/**
- * @ingroup iface_xdg_shell
- * @struct xdg_shell_listener
- */
-struct xdg_shell_listener {
- /**
- * check if the client is alive
- *
- * The ping event asks the client if it's still alive. Pass the
- * serial specified in the event back to the compositor by sending
- * a "pong" request back with the specified serial.
- *
- * Compositors can use this to determine if the client is still
- * alive. It's unspecified what will happen if the client doesn't
- * respond to the ping request, or in what timeframe. Clients
- * should try to respond in a reasonable amount of time.
- *
- * A compositor is free to ping in any way it wants, but a client
- * must always respond to any xdg_shell_v5 object it created.
- * @param serial pass this to the pong request
- */
- void (*ping)(void *data,
- struct xdg_shell_v5 *xdg_shell_v5,
- uint32_t serial);
-};
-
-/**
- * @ingroup iface_xdg_shell
- */
-static inline int
-xdg_shell_add_listener(struct xdg_shell_v5 *xdg_shell,
- const struct xdg_shell_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) xdg_shell,
- (void (**)(void)) listener, data);
-}
-
-#define XDG_SHELL_DESTROY 0
-#define XDG_SHELL_USE_UNSTABLE_VERSION 1
-#define XDG_SHELL_GET_XDG_SURFACE 2
-#define XDG_SHELL_GET_XDG_POPUP 3
-#define XDG_SHELL_PONG 4
-
-/**
- * @ingroup iface_xdg_shell
- */
-#define XDG_SHELL_PING_SINCE_VERSION 1
-
-/**
- * @ingroup iface_xdg_shell
- */
-#define XDG_SHELL_DESTROY_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_shell
- */
-#define XDG_SHELL_USE_UNSTABLE_VERSION_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_shell
- */
-#define XDG_SHELL_GET_XDG_SURFACE_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_shell
- */
-#define XDG_SHELL_GET_XDG_POPUP_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_shell
- */
-#define XDG_SHELL_PONG_SINCE_VERSION 1
-
-/** @ingroup iface_xdg_shell_v5 */
-static inline void
-xdg_shell_set_user_data(struct xdg_shell_v5 *xdg_shell, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) xdg_shell, user_data);
-}
-
-/** @ingroup iface_xdg_shell_v5 */
-static inline void *
-xdg_shell_get_user_data(struct xdg_shell_v5 *xdg_shell)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) xdg_shell);
-}
-
-#if WAYLAND_VERSION_MAJOR > 1 || WAYLAND_VERSION_MINOR >= 10
-static inline uint32_t
-xdg_shell_get_version(struct xdg_shell_v5 *xdg_shell)
-{
- return wl_proxy_get_version((struct wl_proxy *) xdg_shell);
-}
-#endif
-
-/**
- * @ingroup iface_xdg_shell
- *
- * Destroy this xdg_shell_v5 object.
- *
- * Destroying a bound xdg_shell_v5 object while there are surfaces
- * still alive created by this xdg_shell_v5 object instance is illegal
- * and will result in a protocol error.
- */
-static inline void
-xdg_shell_destroy(struct xdg_shell_v5 *xdg_shell)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_shell,
- XDG_SHELL_DESTROY);
-
- wl_proxy_destroy((struct wl_proxy *) xdg_shell);
-}
-
-/**
- * @ingroup iface_xdg_shell
- *
- * Negotiate the unstable version of the interface. This
- * mechanism is in place to ensure client and server agree on the
- * unstable versions of the protocol that they speak or exit
- * cleanly if they don't agree. This request will go away once
- * the xdg-shell protocol is stable.
- */
-static inline void
-xdg_shell_use_unstable_version(struct xdg_shell_v5 *xdg_shell, int32_t version)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_shell,
- XDG_SHELL_USE_UNSTABLE_VERSION, version);
-}
-
-/**
- * @ingroup iface_xdg_shell
- *
- * This creates an xdg_surface_v5 for the given surface and gives it the
- * xdg_surface_v5 role. A wl_surface can only be given an xdg_surface_v5 role
- * once. If get_xdg_surface_v5 is called with a wl_surface that already has
- * an active xdg_surface_v5 associated with it, or if it had any other role,
- * an error is raised.
- *
- * See the documentation of xdg_surface_v5 for more details about what an
- * xdg_surface_v5 is and how it is used.
- */
-static inline struct xdg_surface_v5 *
-xdg_shell_get_xdg_surface(struct xdg_shell_v5 *xdg_shell, struct wl_surface *surface)
-{
- struct wl_proxy *id;
-
- id = wl_proxy_marshal_constructor((struct wl_proxy *) xdg_shell,
- XDG_SHELL_GET_XDG_SURFACE, &xdg_surface_v5_interface, NULL, surface);
-
- return (struct xdg_surface_v5 *) id;
-}
-
-/**
- * @ingroup iface_xdg_shell
- *
- * This creates an xdg_popup_v5 for the given surface and gives it the
- * xdg_popup_v5 role. A wl_surface can only be given an xdg_popup_v5 role
- * once. If get_xdg_popup_v5 is called with a wl_surface that already has
- * an active xdg_popup_v5 associated with it, or if it had any other role,
- * an error is raised.
- *
- * This request must be used in response to some sort of user action
- * like a button press, key press, or touch down event.
- *
- * See the documentation of xdg_popup_v5 for more details about what an
- * xdg_popup_v5 is and how it is used.
- */
-static inline struct xdg_popup_v5 *
-xdg_shell_get_xdg_popup(struct xdg_shell_v5 *xdg_shell, struct wl_surface *surface, struct wl_surface *parent, struct wl_seat *seat, uint32_t serial, int32_t x, int32_t y)
-{
- struct wl_proxy *id;
-
- id = wl_proxy_marshal_constructor((struct wl_proxy *) xdg_shell,
- XDG_SHELL_GET_XDG_POPUP, &xdg_popup_v5_interface, NULL, surface, parent, seat, serial, x, y);
-
- return (struct xdg_popup_v5 *) id;
-}
-
-/**
- * @ingroup iface_xdg_shell
- *
- * A client must respond to a ping event with a pong request or
- * the client may be deemed unresponsive.
- */
-static inline void
-xdg_shell_pong(struct xdg_shell_v5 *xdg_shell, uint32_t serial)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_shell,
- XDG_SHELL_PONG, serial);
-}
-
-#ifndef XDG_SURFACE_RESIZE_EDGE_ENUM
-#define XDG_SURFACE_RESIZE_EDGE_ENUM
-/**
- * @ingroup iface_xdg_surface
- * edge values for resizing
- *
- * These values are used to indicate which edge of a surface
- * is being dragged in a resize operation.
- */
-enum xdg_surface_resize_edge {
- XDG_SURFACE_RESIZE_EDGE_NONE = 0,
- XDG_SURFACE_RESIZE_EDGE_TOP = 1,
- XDG_SURFACE_RESIZE_EDGE_BOTTOM = 2,
- XDG_SURFACE_RESIZE_EDGE_LEFT = 4,
- XDG_SURFACE_RESIZE_EDGE_TOP_LEFT = 5,
- XDG_SURFACE_RESIZE_EDGE_BOTTOM_LEFT = 6,
- XDG_SURFACE_RESIZE_EDGE_RIGHT = 8,
- XDG_SURFACE_RESIZE_EDGE_TOP_RIGHT = 9,
- XDG_SURFACE_RESIZE_EDGE_BOTTOM_RIGHT = 10,
-};
-#endif /* XDG_SURFACE_RESIZE_EDGE_ENUM */
-
-#ifndef XDG_SURFACE_STATE_ENUM
-#define XDG_SURFACE_STATE_ENUM
-/**
- * @ingroup iface_xdg_surface
- * types of state on the surface
- *
- * The different state values used on the surface. This is designed for
- * state values like maximized, fullscreen. It is paired with the
- * configure event to ensure that both the client and the compositor
- * setting the state can be synchronized.
- *
- * States set in this way are double-buffered. They will get applied on
- * the next commit.
- *
- * Desktop environments may extend this enum by taking up a range of
- * values and documenting the range they chose in this description.
- * They are not required to document the values for the range that they
- * chose. Ideally, any good extensions from a desktop environment should
- * make its way into standardization into this enum.
- *
- * The current reserved ranges are:
- *
- * 0x0000 - 0x0FFF: xdg-shell core values, documented below.
- * 0x1000 - 0x1FFF: GNOME
- */
-enum xdg_surface_state {
- /**
- * the surface is maximized
- */
- XDG_SURFACE_STATE_MAXIMIZED = 1,
- /**
- * the surface is fullscreen
- */
- XDG_SURFACE_STATE_FULLSCREEN = 2,
- XDG_SURFACE_STATE_RESIZING = 3,
- XDG_SURFACE_STATE_ACTIVATED = 4,
-};
-#endif /* XDG_SURFACE_STATE_ENUM */
-
-/**
- * @ingroup iface_xdg_surface
- * @struct xdg_surface_listener
- */
-struct xdg_surface_listener {
- /**
- * suggest a surface change
- *
- * The configure event asks the client to resize its surface or
- * to change its state.
- *
- * The width and height arguments specify a hint to the window
- * about how its surface should be resized in window geometry
- * coordinates. See set_window_geometry.
- *
- * If the width or height arguments are zero, it means the client
- * should decide its own window dimension. This may happen when the
- * compositor need to configure the state of the surface but
- * doesn't have any information about any previous or expected
- * dimension.
- *
- * The states listed in the event specify how the width/height
- * arguments should be interpreted, and possibly how it should be
- * drawn.
- *
- * Clients should arrange their surface for the new size and
- * states, and then send a ack_configure request with the serial
- * sent in this configure event at some point before committing the
- * new surface.
- *
- * If the client receives multiple configure events before it can
- * respond to one, it is free to discard all but the last event it
- * received.
- */
- void (*configure)(void *data,
- struct xdg_surface_v5 *xdg_surface_v5,
- int32_t width,
- int32_t height,
- struct wl_array *states,
- uint32_t serial);
- /**
- * surface wants to be closed
- *
- * The close event is sent by the compositor when the user wants
- * the surface to be closed. This should be equivalent to the user
- * clicking the close button in client-side decorations, if your
- * application has any...
- *
- * This is only a request that the user intends to close your
- * window. The client may choose to ignore this request, or show a
- * dialog to ask the user to save their data...
- */
- void (*close)(void *data,
- struct xdg_surface_v5 *xdg_surface_v5);
-};
-
-/**
- * @ingroup iface_xdg_surface
- */
-static inline int
-xdg_surface_add_listener(struct xdg_surface_v5 *xdg_surface,
- const struct xdg_surface_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) xdg_surface,
- (void (**)(void)) listener, data);
-}
-
-#define XDG_SURFACE_DESTROY 0
-#define XDG_SURFACE_SET_PARENT 1
-#define XDG_SURFACE_SET_TITLE 2
-#define XDG_SURFACE_SET_APP_ID 3
-#define XDG_SURFACE_SHOW_WINDOW_MENU 4
-#define XDG_SURFACE_MOVE 5
-#define XDG_SURFACE_RESIZE 6
-#define XDG_SURFACE_ACK_CONFIGURE 7
-#define XDG_SURFACE_SET_WINDOW_GEOMETRY 8
-#define XDG_SURFACE_SET_MAXIMIZED 9
-#define XDG_SURFACE_UNSET_MAXIMIZED 10
-#define XDG_SURFACE_SET_FULLSCREEN 11
-#define XDG_SURFACE_UNSET_FULLSCREEN 12
-#define XDG_SURFACE_SET_MINIMIZED 13
-
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_CONFIGURE_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_CLOSE_SINCE_VERSION 1
-
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_DESTROY_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_SET_PARENT_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_SET_TITLE_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_SET_APP_ID_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_SHOW_WINDOW_MENU_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_MOVE_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_RESIZE_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_ACK_CONFIGURE_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_SET_WINDOW_GEOMETRY_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_SET_MAXIMIZED_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_UNSET_MAXIMIZED_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_SET_FULLSCREEN_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_UNSET_FULLSCREEN_SINCE_VERSION 1
-/**
- * @ingroup iface_xdg_surface
- */
-#define XDG_SURFACE_SET_MINIMIZED_SINCE_VERSION 1
-
-/** @ingroup iface_xdg_surface_v5 */
-static inline void
-xdg_surface_set_user_data(struct xdg_surface_v5 *xdg_surface, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) xdg_surface, user_data);
-}
-
-/** @ingroup iface_xdg_surface_v5 */
-static inline void *
-xdg_surface_get_user_data(struct xdg_surface_v5 *xdg_surface)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) xdg_surface);
-}
-
-#if WAYLAND_VERSION_MAJOR > 1 || WAYLAND_VERSION_MINOR >= 10
-static inline uint32_t
-xdg_surface_get_version(struct xdg_surface_v5 *xdg_surface)
-{
- return wl_proxy_get_version((struct wl_proxy *) xdg_surface);
-}
-#endif
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Unmap and destroy the window. The window will be effectively
- * hidden from the user's point of view, and all state like
- * maximization, fullscreen, and so on, will be lost.
- */
-static inline void
-xdg_surface_destroy(struct xdg_surface_v5 *xdg_surface)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_DESTROY);
-
- wl_proxy_destroy((struct wl_proxy *) xdg_surface);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Set the "parent" of this surface. This window should be stacked
- * above a parent. The parent surface must be mapped as long as this
- * surface is mapped.
- *
- * Parent windows should be set on dialogs, toolboxes, or other
- * "auxiliary" surfaces, so that the parent is raised when the dialog
- * is raised.
- */
-static inline void
-xdg_surface_set_parent(struct xdg_surface_v5 *xdg_surface, struct xdg_surface_v5 *parent)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_SET_PARENT, parent);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Set a short title for the surface.
- *
- * This string may be used to identify the surface in a task bar,
- * window list, or other user interface elements provided by the
- * compositor.
- *
- * The string must be encoded in UTF-8.
- */
-static inline void
-xdg_surface_set_title(struct xdg_surface_v5 *xdg_surface, const char *title)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_SET_TITLE, title);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Set an application identifier for the surface.
- *
- * The app ID identifies the general class of applications to which
- * the surface belongs. The compositor can use this to group multiple
- * surfaces together, or to determine how to launch a new application.
- *
- * For D-Bus activatable applications, the app ID is used as the D-Bus
- * service name.
- *
- * The compositor shell will try to group application surfaces together
- * by their app ID. As a best practice, it is suggested to select app
- * ID's that match the basename of the application's .desktop file.
- * For example, "org.freedesktop.FooViewer" where the .desktop file is
- * "org.freedesktop.FooViewer.desktop".
- *
- * See the desktop-entry specification [0] for more details on
- * application identifiers and how they relate to well-known D-Bus
- * names and .desktop files.
- *
- * [0] http://standards.freedesktop.org/desktop-entry-spec/
- */
-static inline void
-xdg_surface_set_app_id(struct xdg_surface_v5 *xdg_surface, const char *app_id)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_SET_APP_ID, app_id);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Clients implementing client-side decorations might want to show
- * a context menu when right-clicking on the decorations, giving the
- * user a menu that they can use to maximize or minimize the window.
- *
- * This request asks the compositor to pop up such a window menu at
- * the given position, relative to the local surface coordinates of
- * the parent surface. There are no guarantees as to what menu items
- * the window menu contains.
- *
- * This request must be used in response to some sort of user action
- * like a button press, key press, or touch down event.
- */
-static inline void
-xdg_surface_show_window_menu(struct xdg_surface_v5 *xdg_surface, struct wl_seat *seat, uint32_t serial, int32_t x, int32_t y)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_SHOW_WINDOW_MENU, seat, serial, x, y);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Start an interactive, user-driven move of the surface.
- *
- * This request must be used in response to some sort of user action
- * like a button press, key press, or touch down event. The passed
- * serial is used to determine the type of interactive move (touch,
- * pointer, etc).
- *
- * The server may ignore move requests depending on the state of
- * the surface (e.g. fullscreen or maximized), or if the passed serial
- * is no longer valid.
- *
- * If triggered, the surface will lose the focus of the device
- * (wl_pointer, wl_touch, etc) used for the move. It is up to the
- * compositor to visually indicate that the move is taking place, such as
- * updating a pointer cursor, during the move. There is no guarantee
- * that the device focus will return when the move is completed.
- */
-static inline void
-xdg_surface_move(struct xdg_surface_v5 *xdg_surface, struct wl_seat *seat, uint32_t serial)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_MOVE, seat, serial);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Start a user-driven, interactive resize of the surface.
- *
- * This request must be used in response to some sort of user action
- * like a button press, key press, or touch down event. The passed
- * serial is used to determine the type of interactive resize (touch,
- * pointer, etc).
- *
- * The server may ignore resize requests depending on the state of
- * the surface (e.g. fullscreen or maximized).
- *
- * If triggered, the client will receive configure events with the
- * "resize" state enum value and the expected sizes. See the "resize"
- * enum value for more details about what is required. The client
- * must also acknowledge configure events using "ack_configure". After
- * the resize is completed, the client will receive another "configure"
- * event without the resize state.
- *
- * If triggered, the surface also will lose the focus of the device
- * (wl_pointer, wl_touch, etc) used for the resize. It is up to the
- * compositor to visually indicate that the resize is taking place,
- * such as updating a pointer cursor, during the resize. There is no
- * guarantee that the device focus will return when the resize is
- * completed.
- *
- * The edges parameter specifies how the surface should be resized,
- * and is one of the values of the resize_edge enum. The compositor
- * may use this information to update the surface position for
- * example when dragging the top left corner. The compositor may also
- * use this information to adapt its behavior, e.g. choose an
- * appropriate cursor image.
- */
-static inline void
-xdg_surface_resize(struct xdg_surface_v5 *xdg_surface, struct wl_seat *seat, uint32_t serial, uint32_t edges)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_RESIZE, seat, serial, edges);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * When a configure event is received, if a client commits the
- * surface in response to the configure event, then the client
- * must make a ack_configure request before the commit request,
- * passing along the serial of the configure event.
- *
- * For instance, the compositor might use this information to move
- * a surface to the top left only when the client has drawn itself
- * for the maximized or fullscreen state.
- *
- * If the client receives multiple configure events before it
- * can respond to one, it only has to ack the last configure event.
- */
-static inline void
-xdg_surface_ack_configure(struct xdg_surface_v5 *xdg_surface, uint32_t serial)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_ACK_CONFIGURE, serial);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * The window geometry of a window is its "visible bounds" from the
- * user's perspective. Client-side decorations often have invisible
- * portions like drop-shadows which should be ignored for the
- * purposes of aligning, placing and constraining windows.
- *
- * The window geometry is double buffered, and will be applied at the
- * time wl_surface.commit of the corresponding wl_surface is called.
- *
- * Once the window geometry of the surface is set once, it is not
- * possible to unset it, and it will remain the same until
- * set_window_geometry is called again, even if a new subsurface or
- * buffer is attached.
- *
- * If never set, the value is the full bounds of the surface,
- * including any subsurfaces. This updates dynamically on every
- * commit. This unset mode is meant for extremely simple clients.
- *
- * If responding to a configure event, the window geometry in here
- * must respect the sizing negotiations specified by the states in
- * the configure event.
- *
- * The arguments are given in the surface local coordinate space of
- * the wl_surface associated with this xdg_surface.
- *
- * The width and height must be greater than zero.
- */
-static inline void
-xdg_surface_set_window_geometry(struct xdg_surface_v5 *xdg_surface, int32_t x, int32_t y, int32_t width, int32_t height)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_SET_WINDOW_GEOMETRY, x, y, width, height);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Maximize the surface.
- *
- * After requesting that the surface should be maximized, the compositor
- * will respond by emitting a configure event with the "maximized" state
- * and the required window geometry. The client should then update its
- * content, drawing it in a maximized state, i.e. without shadow or other
- * decoration outside of the window geometry. The client must also
- * acknowledge the configure when committing the new content (see
- * ack_configure).
- *
- * It is up to the compositor to decide how and where to maximize the
- * surface, for example which output and what region of the screen should
- * be used.
- *
- * If the surface was already maximized, the compositor will still emit
- * a configure event with the "maximized" state.
- */
-static inline void
-xdg_surface_set_maximized(struct xdg_surface_v5 *xdg_surface)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_SET_MAXIMIZED);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Unmaximize the surface.
- *
- * After requesting that the surface should be unmaximized, the compositor
- * will respond by emitting a configure event without the "maximized"
- * state. If available, the compositor will include the window geometry
- * dimensions the window had prior to being maximized in the configure
- * request. The client must then update its content, drawing it in a
- * regular state, i.e. potentially with shadow, etc. The client must also
- * acknowledge the configure when committing the new content (see
- * ack_configure).
- *
- * It is up to the compositor to position the surface after it was
- * unmaximized; usually the position the surface had before maximizing, if
- * applicable.
- *
- * If the surface was already not maximized, the compositor will still
- * emit a configure event without the "maximized" state.
- */
-static inline void
-xdg_surface_unset_maximized(struct xdg_surface_v5 *xdg_surface)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_UNSET_MAXIMIZED);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Make the surface fullscreen.
- *
- * You can specify an output that you would prefer to be fullscreen.
- * If this value is NULL, it's up to the compositor to choose which
- * display will be used to map this surface.
- *
- * If the surface doesn't cover the whole output, the compositor will
- * position the surface in the center of the output and compensate with
- * black borders filling the rest of the output.
- */
-static inline void
-xdg_surface_set_fullscreen(struct xdg_surface_v5 *xdg_surface, struct wl_output *output)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_SET_FULLSCREEN, output);
-}
-
-/**
- * @ingroup iface_xdg_surface
- */
-static inline void
-xdg_surface_unset_fullscreen(struct xdg_surface_v5 *xdg_surface)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_UNSET_FULLSCREEN);
-}
-
-/**
- * @ingroup iface_xdg_surface
- *
- * Request that the compositor minimize your surface. There is no
- * way to know if the surface is currently minimized, nor is there
- * any way to unset minimization on this surface.
- *
- * If you are looking to throttle redrawing when minimized, please
- * instead use the wl_surface.frame event for this, as this will
- * also work with live previews on windows in Alt-Tab, Expose or
- * similar compositor features.
- */
-static inline void
-xdg_surface_set_minimized(struct xdg_surface_v5 *xdg_surface)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_surface,
- XDG_SURFACE_SET_MINIMIZED);
-}
-
-/**
- * @ingroup iface_xdg_popup
- * @struct xdg_popup_listener
- */
-struct xdg_popup_listener {
- /**
- * popup interaction is done
- *
- * The popup_done event is sent out when a popup is dismissed by
- * the compositor. The client should destroy the xdg_popup_v5 object
- * at this point.
- */
- void (*popup_done)(void *data,
- struct xdg_popup_v5 *xdg_popup_v5);
-};
-
-/**
- * @ingroup iface_xdg_popup
- */
-static inline int
-xdg_popup_add_listener(struct xdg_popup_v5 *xdg_popup,
- const struct xdg_popup_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) xdg_popup,
- (void (**)(void)) listener, data);
-}
-
-#define XDG_POPUP_DESTROY 0
-
-/**
- * @ingroup iface_xdg_popup
- */
-#define XDG_POPUP_POPUP_DONE_SINCE_VERSION 1
-
-/**
- * @ingroup iface_xdg_popup
- */
-#define XDG_POPUP_DESTROY_SINCE_VERSION 1
-
-/** @ingroup iface_xdg_popup_v5 */
-static inline void
-xdg_popup_set_user_data(struct xdg_popup_v5 *xdg_popup, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) xdg_popup, user_data);
-}
-
-/** @ingroup iface_xdg_popup_v5 */
-static inline void *
-xdg_popup_get_user_data(struct xdg_popup_v5 *xdg_popup)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) xdg_popup);
-}
-
-#if WAYLAND_VERSION_MAJOR > 1 || WAYLAND_VERSION_MINOR >= 10
-static inline uint32_t
-xdg_popup_get_version(struct xdg_popup_v5 *xdg_popup)
-{
- return wl_proxy_get_version((struct wl_proxy *) xdg_popup);
-}
-#endif
-
-/**
- * @ingroup iface_xdg_popup
- *
- * This destroys the popup. Explicitly destroying the xdg_popup
- * object will also dismiss the popup, and unmap the surface.
- *
- * If this xdg_popup_v5 is not the "topmost" popup, a protocol error
- * will be sent.
- */
-static inline void
-xdg_popup_destroy(struct xdg_popup_v5 *xdg_popup)
-{
- wl_proxy_marshal((struct wl_proxy *) xdg_popup,
- XDG_POPUP_DESTROY);
-
- wl_proxy_destroy((struct wl_proxy *) xdg_popup);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/pregenerated/3rdparty/wayland-xdg-shell-unstable-v5-protocol.c b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/pregenerated/3rdparty/wayland-xdg-shell-unstable-v5-protocol.c
deleted file mode 100644
index 50a42437cf5..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/pregenerated/3rdparty/wayland-xdg-shell-unstable-v5-protocol.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Generated by wayland-scanner 1.13.0 */
-// Hand-edited to resolve conflicts with xdg-shell stable
-
-/*
- * Copyright © 2008-2013 Kristian Høgsberg
- * Copyright © 2013 Rafael Antognolli
- * Copyright © 2013 Jasper St. Pierre
- * Copyright © 2010-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include
-#include
-#include "wayland-util.h"
-
-extern const struct wl_interface wl_output_interface;
-extern const struct wl_interface wl_seat_interface;
-extern const struct wl_interface wl_surface_interface;
-extern const struct wl_interface xdg_popup_v5_interface;
-extern const struct wl_interface xdg_surface_v5_interface;
-
-static const struct wl_interface *types[] = {
- NULL,
- NULL,
- NULL,
- NULL,
- &xdg_surface_v5_interface,
- &wl_surface_interface,
- &xdg_popup_v5_interface,
- &wl_surface_interface,
- &wl_surface_interface,
- &wl_seat_interface,
- NULL,
- NULL,
- NULL,
- &xdg_surface_v5_interface,
- &wl_seat_interface,
- NULL,
- NULL,
- NULL,
- &wl_seat_interface,
- NULL,
- &wl_seat_interface,
- NULL,
- NULL,
- &wl_output_interface,
-};
-
-static const struct wl_message xdg_shell_requests[] = {
- { "destroy", "", types + 0 },
- { "use_unstable_version", "i", types + 0 },
- { "get_xdg_surface", "no", types + 4 },
- { "get_xdg_popup", "nooouii", types + 6 },
- { "pong", "u", types + 0 },
-};
-
-static const struct wl_message xdg_shell_events[] = {
- { "ping", "u", types + 0 },
-};
-
-WL_EXPORT const struct wl_interface xdg_shell_v5_interface = {
- "xdg_shell", 1,
- 5, xdg_shell_requests,
- 1, xdg_shell_events,
-};
-
-static const struct wl_message xdg_surface_requests[] = {
- { "destroy", "", types + 0 },
- { "set_parent", "?o", types + 13 },
- { "set_title", "s", types + 0 },
- { "set_app_id", "s", types + 0 },
- { "show_window_menu", "ouii", types + 14 },
- { "move", "ou", types + 18 },
- { "resize", "ouu", types + 20 },
- { "ack_configure", "u", types + 0 },
- { "set_window_geometry", "iiii", types + 0 },
- { "set_maximized", "", types + 0 },
- { "unset_maximized", "", types + 0 },
- { "set_fullscreen", "?o", types + 23 },
- { "unset_fullscreen", "", types + 0 },
- { "set_minimized", "", types + 0 },
-};
-
-static const struct wl_message xdg_surface_events[] = {
- { "configure", "iiau", types + 0 },
- { "close", "", types + 0 },
-};
-
-WL_EXPORT const struct wl_interface xdg_surface_v5_interface = {
- "xdg_surface", 1,
- 14, xdg_surface_requests,
- 2, xdg_surface_events,
-};
-
-static const struct wl_message xdg_popup_requests[] = {
- { "destroy", "", types + 0 },
-};
-
-static const struct wl_message xdg_popup_events[] = {
- { "popup_done", "", types + 0 },
-};
-
-WL_EXPORT const struct wl_interface xdg_popup_v5_interface = {
- "xdg_popup", 1,
- 1, xdg_popup_requests,
- 1, xdg_popup_events,
-};
-
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/pregenerated/xdg-shell-v5.pri b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/pregenerated/xdg-shell-v5.pri
deleted file mode 100644
index 2990fd0f669..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/pregenerated/xdg-shell-v5.pri
+++ /dev/null
@@ -1,12 +0,0 @@
-# Putting pregenerated files in a 3rdparty directory to avoid
-# qtqa's license checking failing.
-
-HEADERS += \
- $$PWD/3rdparty/qwayland-xdg-shell-unstable-v5_p.h \
- $$PWD/3rdparty/wayland-xdg-shell-unstable-v5-client-protocol_p.h
-
-SOURCES += \
- $$PWD/3rdparty/qwayland-xdg-shell-unstable-v5.cpp \
- $$PWD/3rdparty/wayland-xdg-shell-unstable-v5-protocol.c
-
-INCLUDEPATH += $$PWD/3rdparty
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp
deleted file mode 100644
index 85d25e3c07a..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qwaylandxdgpopupv5_p.h"
-
-#include
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-QWaylandXdgPopupV5::QWaylandXdgPopupV5(struct ::xdg_popup_v5 *popup, QWaylandWindow *window)
- : QWaylandShellSurface(window)
- , QtWayland::xdg_popup_v5(popup)
- , m_window(window)
-{
- if (window->display()->windowExtension())
- m_extendedWindow = new QWaylandExtendedSurface(window);
-}
-
-QWaylandXdgPopupV5::~QWaylandXdgPopupV5()
-{
- xdg_popup_destroy(object());
- delete m_extendedWindow;
-}
-
-void QWaylandXdgPopupV5::xdg_popup_popup_done()
-{
- m_window->window()->close();
-}
-
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h
deleted file mode 100644
index 7494f6a67ea..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QWAYLANDXDGPOPUPV5_P_H
-#define QWAYLANDXDGPOPUPV5_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qwayland-xdg-shell-unstable-v5_p.h"
-
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-class QWindow;
-
-namespace QtWaylandClient {
-
-class QWaylandWindow;
-class QWaylandExtendedSurface;
-
-class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgPopupV5 : public QWaylandShellSurface
- , public QtWayland::xdg_popup_v5
-{
- Q_OBJECT
-public:
- QWaylandXdgPopupV5(struct ::xdg_popup_v5 *popup, QWaylandWindow *window);
- ~QWaylandXdgPopupV5() override;
-
-protected:
- void xdg_popup_popup_done() override;
-
-private:
- QWaylandExtendedSurface *m_extendedWindow = nullptr;
- QWaylandWindow *m_window = nullptr;
-};
-
-QT_END_NAMESPACE
-
-}
-
-#endif // QWAYLANDXDGPOPUPV5_P_H
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp
deleted file mode 100644
index 7e242c4a532..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Eurogiciel, author:
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qwaylandxdgshellv5_p.h"
-#include "qwaylandxdgpopupv5_p.h"
-#include "qwaylandxdgsurfacev5_p.h"
-
-#include
-
-#include
-#include
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-QWaylandXdgShellV5::QWaylandXdgShellV5(struct ::wl_registry *registry, uint32_t id)
- : QtWayland::xdg_shell_v5(registry, id, 1)
-{
- use_unstable_version(QtWayland::xdg_shell_v5::version_current);
-}
-
-QWaylandXdgShellV5::~QWaylandXdgShellV5()
-{
- xdg_shell_destroy(object());
-}
-
-QWaylandXdgSurfaceV5 *QWaylandXdgShellV5::createXdgSurface(QWaylandWindow *window)
-{
- return new QWaylandXdgSurfaceV5(this, window);
-}
-
-QWaylandXdgPopupV5 *QWaylandXdgShellV5::createXdgPopup(QWaylandWindow *window, QWaylandInputDevice *inputDevice)
-{
- QWaylandWindow *parentWindow = m_popups.empty() ? window->transientParent() : m_popups.last();
- if (!parentWindow)
- return nullptr;
-
- ::wl_surface *parentSurface = parentWindow->wlSurface();
-
- if (m_popupSerial == 0)
- m_popupSerial = inputDevice->serial();
- ::wl_seat *seat = inputDevice->wl_seat();
-
- QPoint position = window->geometry().topLeft() - parentWindow->geometry().topLeft();
- int x = position.x() + parentWindow->frameMargins().left();
- int y = position.y() + parentWindow->frameMargins().top();
-
- auto popup = new QWaylandXdgPopupV5(get_xdg_popup(window->wlSurface(), parentSurface, seat, m_popupSerial, x, y), window);
- m_popups.append(window);
- QObject::connect(popup, &QWaylandXdgPopupV5::destroyed, [this, window](){
- m_popups.removeOne(window);
- if (m_popups.empty())
- m_popupSerial = 0;
- });
- return popup;
-}
-
-void QWaylandXdgShellV5::xdg_shell_ping(uint32_t serial)
-{
- pong(serial);
-}
-
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5_p.h b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5_p.h
deleted file mode 100644
index d0bdc8bc688..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5_p.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Eurogiciel, author:
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QWAYLANDXDGSHELLV5_H
-#define QWAYLANDXDGSHELLV5_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qwayland-xdg-shell-unstable-v5_p.h"
-
-#include
-#include
-
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-class QWindow;
-
-namespace QtWaylandClient {
-
-class QWaylandWindow;
-class QWaylandInputDevice;
-class QWaylandXdgSurfaceV5;
-class QWaylandXdgPopupV5;
-
-class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShellV5 : public QtWayland::xdg_shell_v5
-{
-public:
- QWaylandXdgShellV5(struct ::wl_registry *registry, uint32_t id);
- ~QWaylandXdgShellV5() override;
-
- QWaylandXdgSurfaceV5 *createXdgSurface(QWaylandWindow *window);
- QWaylandXdgPopupV5 *createXdgPopup(QWaylandWindow *window, QWaylandInputDevice *inputDevice);
-
-private:
- void xdg_shell_ping(uint32_t serial) override;
-
- QList m_popups;
- uint m_popupSerial = 0;
-};
-
-QT_END_NAMESPACE
-
-}
-
-#endif // QWAYLANDXDGSHELLV5_H
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
deleted file mode 100644
index 4e25949fa30..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qwaylandxdgshellv5integration_p.h"
-#include "qwaylandxdgsurfacev5_p.h"
-#include "qwaylandxdgpopupv5_p.h"
-#include "qwaylandxdgshellv5_p.h"
-
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-bool QWaylandXdgShellV5Integration::initialize(QWaylandDisplay *display)
-{
- const auto globals = display->globals();
- for (QWaylandDisplay::RegistryGlobal global : globals) {
- if (global.interface == QLatin1String("xdg_shell")) {
- m_xdgShell.reset(new QWaylandXdgShellV5(display->wl_registry(), global.id));
- break;
- }
- }
-
- if (!m_xdgShell) {
- qWarning() << "Couldn't find global xdg_shell for xdg-shell unstable v5";
- return false;
- }
-
- qCWarning(lcQpaWayland) << "\"xdg-shell-v5\" is a deprecated shell extension, prefer using"
- << "\"xdg-shell-v6\" or \"xdg-shell\" if supported by the compositor"
- << "by setting the environment variable QT_WAYLAND_SHELL_INTEGRATION";
-
- return QWaylandShellIntegration::initialize(display);
-}
-
-QWaylandShellSurface *QWaylandXdgShellV5Integration::createShellSurface(QWaylandWindow *window)
-{
- QWaylandInputDevice *inputDevice = window->display()->lastInputDevice();
- if (window->window()->type() == Qt::WindowType::Popup && inputDevice) {
- if (auto *popup = m_xdgShell->createXdgPopup(window, inputDevice))
- return popup;
-
- qWarning(lcQpaWayland) << "Failed to create xdg-popup v5 for window" << window->window()
- << "falling back to creating an xdg-surface";
- }
-
- return m_xdgShell->createXdgSurface(window);
-}
-
-void QWaylandXdgShellV5Integration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) {
- if (newFocus && qobject_cast(newFocus->shellSurface()))
- m_display->handleWindowActivated(newFocus);
- if (oldFocus && qobject_cast(oldFocus->shellSurface()))
- m_display->handleWindowDeactivated(oldFocus);
-}
-
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
deleted file mode 100644
index ce6bdb9eebf..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QWAYLANDXDGSHELLV5INTEGRATION_P_H
-#define QWAYLANDXDGSHELLV5INTEGRATION_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qwaylandxdgshellv5_p.h"
-
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-class QWaylandXdgShellV5;
-
-class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShellV5Integration : public QWaylandShellIntegration
-{
-public:
- QWaylandXdgShellV5Integration() {}
- bool initialize(QWaylandDisplay *display) override;
- QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override;
- void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) override;
-
-private:
- QScopedPointer m_xdgShell;
-};
-
-}
-
-QT_END_NAMESPACE
-
-#endif // QWAYLANDXDGSHELLV5INTEGRATION_P_H
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp
deleted file mode 100644
index 770fad7e853..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp
+++ /dev/null
@@ -1,246 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qwaylandxdgsurfacev5_p.h"
-#include "qwaylandxdgshellv5_p.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-QWaylandXdgSurfaceV5::QWaylandXdgSurfaceV5(QWaylandXdgShellV5 *shell, QWaylandWindow *window)
- : QWaylandShellSurface(window)
- , QtWayland::xdg_surface_v5(shell->get_xdg_surface(window->wlSurface()))
- , m_window(window)
- , m_shell(shell)
-{
- if (window->display()->windowExtension())
- m_extendedWindow = new QWaylandExtendedSurface(window);
-
- updateTransientParent(window->transientParent());
-}
-
-QWaylandXdgSurfaceV5::~QWaylandXdgSurfaceV5()
-{
- if (m_acked.states & Qt::WindowActive)
- window()->display()->handleWindowDeactivated(m_window);
-
- xdg_surface_destroy(object());
- delete m_extendedWindow;
-}
-
-QtWayland::xdg_surface_v5::resize_edge QWaylandXdgSurfaceV5::convertToResizeEdges(Qt::Edges edges)
-{
- return static_cast(
- ((edges & Qt::TopEdge) ? resize_edge_top : 0)
- | ((edges & Qt::BottomEdge) ? resize_edge_bottom : 0)
- | ((edges & Qt::LeftEdge) ? resize_edge_left : 0)
- | ((edges & Qt::RightEdge) ? resize_edge_right : 0));
-}
-
-bool QWaylandXdgSurfaceV5::resize(QWaylandInputDevice *inputDevice, Qt::Edges edges)
-{
- resize_edge resizeEdges = convertToResizeEdges(edges);
- resize(inputDevice->wl_seat(), inputDevice->serial(), resizeEdges);
- return true;
-}
-
-bool QWaylandXdgSurfaceV5::move(QWaylandInputDevice *inputDevice)
-{
- move(inputDevice->wl_seat(),
- inputDevice->serial());
- return true;
-}
-
-bool QWaylandXdgSurfaceV5::showWindowMenu(QWaylandInputDevice *seat)
-{
- QPoint position = seat->pointerSurfacePosition().toPoint();
- show_window_menu(seat->wl_seat(), seat->serial(), position.x(), position.y());
- return true;
-}
-
-void QWaylandXdgSurfaceV5::updateTransientParent(QWaylandWindow *parent)
-{
- if (!parent)
- return;
- auto parentXdgSurface = qobject_cast(parent->shellSurface());
- Q_ASSERT(parentXdgSurface);
- set_parent(parentXdgSurface->object());
-}
-
-void QWaylandXdgSurfaceV5::setTitle(const QString & title)
-{
- return QtWayland::xdg_surface_v5::set_title(title);
-}
-
-void QWaylandXdgSurfaceV5::setAppId(const QString & appId)
-{
- return QtWayland::xdg_surface_v5::set_app_id(appId);
-}
-
-void QWaylandXdgSurfaceV5::raise()
-{
- if (m_extendedWindow)
- m_extendedWindow->raise();
-}
-
-void QWaylandXdgSurfaceV5::lower()
-{
- if (m_extendedWindow)
- m_extendedWindow->lower();
-}
-
-void QWaylandXdgSurfaceV5::setContentOrientationMask(Qt::ScreenOrientations orientation)
-{
- if (m_extendedWindow)
- m_extendedWindow->setContentOrientationMask(orientation);
-}
-
-void QWaylandXdgSurfaceV5::setWindowFlags(Qt::WindowFlags flags)
-{
- if (m_extendedWindow)
- m_extendedWindow->setWindowFlags(flags);
-}
-
-void QWaylandXdgSurfaceV5::sendProperty(const QString &name, const QVariant &value)
-{
- if (m_extendedWindow)
- m_extendedWindow->updateGenericProperty(name, value);
-}
-
-void QWaylandXdgSurfaceV5::applyConfigure()
-{
- if (m_pending.isResizing)
- m_normalSize = m_pending.size;
- else if (!(m_acked.states & (Qt::WindowMaximized|Qt::WindowFullScreen)))
- m_normalSize = m_window->window()->frameGeometry().size();
-
- if ((m_pending.states & Qt::WindowActive) && !(m_acked.states & Qt::WindowActive))
- m_window->display()->handleWindowActivated(m_window);
-
- if (!(m_pending.states & Qt::WindowActive) && (m_acked.states & Qt::WindowActive))
- m_window->display()->handleWindowDeactivated(m_window);
-
- // TODO: none of the other plugins send WindowActive either, but is it on purpose?
- Qt::WindowStates statesWithoutActive = m_pending.states & ~Qt::WindowActive;
-
- m_window->handleWindowStatesChanged(statesWithoutActive);
- if (!m_pending.size.isEmpty())
- m_window->resizeFromApplyConfigure(m_pending.size);
- else if (!m_normalSize.isEmpty())
- m_window->resizeFromApplyConfigure(m_normalSize);
- ack_configure(m_pending.serial);
- m_acked = m_pending;
-}
-
-void QWaylandXdgSurfaceV5::requestWindowStates(Qt::WindowStates states)
-{
- Qt::WindowStates changedStates = m_acked.states ^ states;
-
- if (changedStates & Qt::WindowMaximized) {
- if (states & Qt::WindowMaximized)
- set_maximized();
- else
- unset_maximized();
- }
-
- if (changedStates & Qt::WindowFullScreen) {
- if (states & Qt::WindowFullScreen)
- set_fullscreen(nullptr);
- else
- unset_fullscreen();
- }
-
- // Minimized state is not reported by the protocol, so always send it
- if (states & Qt::WindowMinimized) {
- set_minimized();
- window()->handleWindowStatesChanged(states & ~Qt::WindowMinimized);
- }
-}
-
-bool QWaylandXdgSurfaceV5::wantsDecorations() const
-{
- return !(m_pending.states & Qt::WindowFullScreen);
-}
-
-void QWaylandXdgSurfaceV5::xdg_surface_configure(int32_t width, int32_t height, struct wl_array *states,uint32_t serial)
-{
- uint32_t *xdgStates = reinterpret_cast(states->data);
- size_t numStates = states->size / sizeof(uint32_t);
- m_pending.serial = serial;
- m_pending.size = QSize(width, height);
- m_pending.isResizing = false;
- m_pending.states = Qt::WindowNoState;
- for (size_t i = 0; i < numStates; i++) {
- switch (xdgStates[i]) {
- case XDG_SURFACE_STATE_MAXIMIZED:
- m_pending.states |= Qt::WindowMaximized;
- break;
- case XDG_SURFACE_STATE_FULLSCREEN:
- m_pending.states |= Qt::WindowFullScreen;
- break;
- case XDG_SURFACE_STATE_RESIZING:
- m_pending.isResizing = true;
- break;
- case XDG_SURFACE_STATE_ACTIVATED:
- m_pending.states |= Qt::WindowActive;
- break;
- default:
- break;
- }
- }
- m_window->applyConfigureWhenPossible();
-}
-
-void QWaylandXdgSurfaceV5::xdg_surface_close()
-{
- m_window->window()->close();
-}
-
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5_p.h b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5_p.h
deleted file mode 100644
index bf221079e99..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5_p.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QWAYLANDXDGSURFACEV5_P_H
-#define QWAYLANDXDGSURFACEV5_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qwayland-xdg-shell-unstable-v5_p.h"
-
-#include
-#include
-
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-class QWindow;
-
-namespace QtWaylandClient {
-
-class QWaylandWindow;
-class QWaylandInputDevice;
-class QWaylandExtendedSurface;
-class QWaylandXdgShellV5;
-
-class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgSurfaceV5 : public QWaylandShellSurface
- , public QtWayland::xdg_surface_v5
-{
- Q_OBJECT
-public:
- QWaylandXdgSurfaceV5(QWaylandXdgShellV5 *shell, QWaylandWindow *window);
- ~QWaylandXdgSurfaceV5() override;
-
- using QtWayland::xdg_surface_v5::resize;
- static resize_edge convertToResizeEdges(Qt::Edges edges);
- bool resize(QWaylandInputDevice *inputDevice, Qt::Edges edges) override;
-
- using QtWayland::xdg_surface_v5::move;
- bool move(QWaylandInputDevice *inputDevice) override;
- bool showWindowMenu(QWaylandInputDevice *seat) override;
-
- void setTitle(const QString &title) override;
- void setAppId(const QString &appId) override;
-
- void raise() override;
- void lower() override;
- void setContentOrientationMask(Qt::ScreenOrientations orientation) override;
- void setWindowFlags(Qt::WindowFlags flags) override;
- void sendProperty(const QString &name, const QVariant &value) override;
-
- void applyConfigure() override;
- void requestWindowStates(Qt::WindowStates states) override;
- bool wantsDecorations() const override;
-
-private:
- void updateTransientParent(QWaylandWindow *parent);
-
-private:
- QWaylandWindow *m_window = nullptr;
- QWaylandXdgShellV5* m_shell = nullptr;
- struct {
- Qt::WindowStates states = Qt::WindowNoState;
- bool isResizing = false;
- QSize size = {0, 0};
- uint serial = 0;
- } m_acked, m_pending;
- QSize m_normalSize;
- QMargins m_margins;
- QWaylandExtendedSurface *m_extendedWindow = nullptr;
-
- void xdg_surface_configure(int32_t width,
- int32_t height,
- struct wl_array *states,
- uint32_t serial) override;
- void xdg_surface_close() override;
-
- friend class QWaylandWindow;
-};
-
-QT_END_NAMESPACE
-
-}
-
-#endif // QWAYLANDXDGSURFACEV5_P_H
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/xdg-shell-v5.json b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/xdg-shell-v5.json
deleted file mode 100644
index ba1ed448920..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/xdg-shell-v5.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "Keys":[ "xdg-shell-v5" ]
-}
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/xdg-shell-v5.pro b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/xdg-shell-v5.pro
deleted file mode 100644
index 4f6dde9bcf6..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v5/xdg-shell-v5.pro
+++ /dev/null
@@ -1,29 +0,0 @@
-QT += gui-private waylandclient-private
-CONFIG += wayland-scanner
-
-QMAKE_USE += wayland-client
-
-qtConfig(xkbcommon): \
- QMAKE_USE += xkbcommon
-
-HEADERS += \
- qwaylandxdgpopupv5_p.h \
- qwaylandxdgshellv5_p.h \
- qwaylandxdgshellv5integration_p.h \
- qwaylandxdgsurfacev5_p.h \
-
-SOURCES += \
- main.cpp \
- qwaylandxdgpopupv5.cpp \
- qwaylandxdgshellv5.cpp \
- qwaylandxdgshellv5integration.cpp \
- qwaylandxdgsurfacev5.cpp \
-
-include (pregenerated/xdg-shell-v5.pri)
-
-OTHER_FILES += \
- xdg-shell-v5.json
-
-PLUGIN_TYPE = wayland-shell-integration
-PLUGIN_CLASS_NAME = QWaylandXdgShellV5IntegrationPlugin
-load(qt_plugin)
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/CMakeLists.txt b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/CMakeLists.txt
deleted file mode 100644
index 4ea237f6a69..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/CMakeLists.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-# Generated from xdg-shell-v6.pro.
-
-#####################################################################
-## QWaylandXdgShellV6IntegrationPlugin Plugin:
-#####################################################################
-
-qt_internal_add_plugin(QWaylandXdgShellV6IntegrationPlugin
- OUTPUT_NAME xdg-shell-v6
- TYPE wayland-shell-integration
- SOURCES
- main.cpp
- qwaylandxdgshellv6.cpp qwaylandxdgshellv6_p.h
- qwaylandxdgshellv6integration.cpp qwaylandxdgshellv6integration_p.h
- PUBLIC_LIBRARIES
- Qt::Core
- Qt::Gui
- Qt::GuiPrivate
- Qt::WaylandClientPrivate
- Wayland::Client
-)
-
-qt6_generate_wayland_protocol_client_sources(QWaylandXdgShellV6IntegrationPlugin
- FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../3rdparty/protocol/xdg-shell-unstable-v6.xml
-)
-
-#### Keys ignored in scope 1:.:.:xdg-shell-v6.pro::
-# OTHER_FILES = "xdg-shell-v6.json"
-
-## Scopes:
-#####################################################################
-
-qt_internal_extend_target(QWaylandXdgShellV6IntegrationPlugin CONDITION QT_FEATURE_xkbcommon
- LIBRARIES
- XKB::XKB
-)
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/main.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/main.cpp
deleted file mode 100644
index 8cd302f328a..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/main.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qwaylandxdgshellv6integration_p.h"
-
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-class QWaylandXdgShellV6IntegrationPlugin : public QWaylandShellIntegrationPlugin
-{
- Q_OBJECT
- Q_PLUGIN_METADATA(IID QWaylandShellIntegrationFactoryInterface_iid FILE "xdg-shell-v6.json")
-
-public:
- QWaylandShellIntegration *create(const QString &key, const QStringList ¶mList) override;
-};
-
-QWaylandShellIntegration *QWaylandXdgShellV6IntegrationPlugin::create(const QString &key, const QStringList ¶mList)
-{
- Q_UNUSED(key);
- Q_UNUSED(paramList);
- return new QWaylandXdgShellV6Integration();
-}
-
-}
-
-QT_END_NAMESPACE
-
-#include "main.moc"
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
deleted file mode 100644
index c137b308bc0..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
+++ /dev/null
@@ -1,441 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2017 Eurogiciel, author:
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qwaylandxdgshellv6_p.h"
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-QWaylandXdgSurfaceV6::Toplevel::Toplevel(QWaylandXdgSurfaceV6 *xdgSurface)
- : QtWayland::zxdg_toplevel_v6(xdgSurface->get_toplevel())
- , m_xdgSurface(xdgSurface)
-{
- requestWindowStates(xdgSurface->window()->window()->windowStates());
-}
-
-QWaylandXdgSurfaceV6::Toplevel::~Toplevel()
-{
- if (m_applied.states & Qt::WindowActive) {
- QWaylandWindow *window = m_xdgSurface->window();
- window->display()->handleWindowDeactivated(window);
- }
- if (isInitialized())
- destroy();
-}
-
-void QWaylandXdgSurfaceV6::Toplevel::applyConfigure()
-{
- if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen)))
- m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size();
-
- if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive))
- m_xdgSurface->m_window->display()->handleWindowActivated(m_xdgSurface->m_window);
-
- if (!(m_pending.states & Qt::WindowActive) && (m_applied.states & Qt::WindowActive))
- m_xdgSurface->m_window->display()->handleWindowDeactivated(m_xdgSurface->m_window);
-
- // TODO: none of the other plugins send WindowActive either, but is it on purpose?
- Qt::WindowStates statesWithoutActive = m_pending.states & ~Qt::WindowActive;
-
- m_xdgSurface->m_window->handleWindowStatesChanged(statesWithoutActive);
-
- if (m_pending.size.isEmpty()) {
- // An empty size in the configure means it's up to the client to choose the size
- bool normalPending = !(m_pending.states & (Qt::WindowMaximized|Qt::WindowFullScreen));
- if (normalPending && !m_normalSize.isEmpty())
- m_xdgSurface->m_window->resizeFromApplyConfigure(m_normalSize);
- } else {
- m_xdgSurface->m_window->resizeFromApplyConfigure(m_pending.size);
- }
-
- m_xdgSurface->setSizeHints();
-
- m_applied = m_pending;
- qCDebug(lcQpaWayland) << "Applied pending zxdg_toplevel_v6 configure event:" << m_applied.size << m_applied.states;
-}
-
-void QWaylandXdgSurfaceV6::Toplevel::zxdg_toplevel_v6_configure(int32_t width, int32_t height, wl_array *states)
-{
- m_pending.size = QSize(width, height);
-
- auto *xdgStates = static_cast(states->data);
- size_t numStates = states->size / sizeof(uint32_t);
-
- m_pending.states = Qt::WindowNoState;
-
- for (size_t i = 0; i < numStates; i++) {
- switch (xdgStates[i]) {
- case ZXDG_TOPLEVEL_V6_STATE_ACTIVATED:
- m_pending.states |= Qt::WindowActive;
- break;
- case ZXDG_TOPLEVEL_V6_STATE_MAXIMIZED:
- m_pending.states |= Qt::WindowMaximized;
- break;
- case ZXDG_TOPLEVEL_V6_STATE_FULLSCREEN:
- m_pending.states |= Qt::WindowFullScreen;
- break;
- default:
- break;
- }
- }
- qCDebug(lcQpaWayland) << "Received zxdg_toplevel_v6.configure with" << m_pending.size
- << "and" << m_pending.states;
-}
-
-void QWaylandXdgSurfaceV6::Toplevel::zxdg_toplevel_v6_close()
-{
- m_xdgSurface->m_window->window()->close();
-}
-
-void QWaylandXdgSurfaceV6::Toplevel::requestWindowStates(Qt::WindowStates states)
-{
- // Re-send what's different from the applied state
- Qt::WindowStates changedStates = m_applied.states ^ states;
-
- if (changedStates & Qt::WindowMaximized) {
- if (states & Qt::WindowMaximized)
- set_maximized();
- else
- unset_maximized();
- }
-
- if (changedStates & Qt::WindowFullScreen) {
- if (states & Qt::WindowFullScreen)
- set_fullscreen(nullptr);
- else
- unset_fullscreen();
- }
-
- // Minimized state is not reported by the protocol, so always send it
- if (states & Qt::WindowMinimized) {
- set_minimized();
- m_xdgSurface->window()->handleWindowStatesChanged(states & ~Qt::WindowMinimized);
- }
-}
-
-QtWayland::zxdg_toplevel_v6::resize_edge QWaylandXdgSurfaceV6::Toplevel::convertToResizeEdges(Qt::Edges edges)
-{
- return static_cast(
- ((edges & Qt::TopEdge) ? resize_edge_top : 0)
- | ((edges & Qt::BottomEdge) ? resize_edge_bottom : 0)
- | ((edges & Qt::LeftEdge) ? resize_edge_left : 0)
- | ((edges & Qt::RightEdge) ? resize_edge_right : 0));
-}
-
-QWaylandXdgSurfaceV6::Popup::Popup(QWaylandXdgSurfaceV6 *xdgSurface, QWaylandXdgSurfaceV6 *parent,
- QtWayland::zxdg_positioner_v6 *positioner)
- : zxdg_popup_v6(xdgSurface->get_popup(parent->object(), positioner->object()))
- , m_xdgSurface(xdgSurface)
- , m_parent(parent)
-{
-}
-
-QWaylandXdgSurfaceV6::Popup::~Popup()
-{
- if (isInitialized())
- destroy();
-
- if (m_grabbing) {
- auto *shell = m_xdgSurface->m_shell;
- Q_ASSERT(shell->m_topmostGrabbingPopup == this);
- shell->m_topmostGrabbingPopup = m_parent->m_popup;
- }
-}
-
-void QWaylandXdgSurfaceV6::Popup::grab(QWaylandInputDevice *seat, uint serial)
-{
- m_xdgSurface->m_shell->m_topmostGrabbingPopup = this;
- zxdg_popup_v6::grab(seat->wl_seat(), serial);
- m_grabbing = true;
-}
-
-void QWaylandXdgSurfaceV6::Popup::zxdg_popup_v6_popup_done()
-{
- m_xdgSurface->m_window->window()->close();
-}
-
-QWaylandXdgSurfaceV6::QWaylandXdgSurfaceV6(QWaylandXdgShellV6 *shell, ::zxdg_surface_v6 *surface, QWaylandWindow *window)
- : QWaylandShellSurface(window)
- , zxdg_surface_v6(surface)
- , m_shell(shell)
- , m_window(window)
-{
- QWaylandDisplay *display = window->display();
- Qt::WindowType type = window->window()->type();
- auto *transientParent = window->transientParent();
-
- if (type == Qt::ToolTip && transientParent) {
- setPopup(transientParent);
- } else if (type == Qt::Popup && transientParent && display->lastInputDevice()) {
- setGrabPopup(transientParent, display->lastInputDevice(), display->lastInputSerial());
- } else {
- setToplevel();
- if (transientParent) {
- auto parentXdgSurface = static_cast(transientParent->shellSurface());
- if (parentXdgSurface)
- m_toplevel->set_parent(parentXdgSurface->m_toplevel->object());
- }
- }
-}
-
-QWaylandXdgSurfaceV6::~QWaylandXdgSurfaceV6()
-{
- if (m_toplevel) {
- delete m_toplevel;
- m_toplevel = nullptr;
- }
- if (m_popup) {
- delete m_popup;
- m_popup = nullptr;
- }
- destroy();
-}
-
-bool QWaylandXdgSurfaceV6::resize(QWaylandInputDevice *inputDevice, Qt::Edges edges)
-{
- if (!m_toplevel || !m_toplevel->isInitialized())
- return false;
-
- auto resizeEdges = Toplevel::convertToResizeEdges(edges);
- m_toplevel->resize(inputDevice->wl_seat(), inputDevice->serial(), resizeEdges);
- return true;
-}
-
-bool QWaylandXdgSurfaceV6::move(QWaylandInputDevice *inputDevice)
-{
- if (m_toplevel && m_toplevel->isInitialized()) {
- m_toplevel->move(inputDevice->wl_seat(), inputDevice->serial());
- return true;
- }
- return false;
-}
-
-bool QWaylandXdgSurfaceV6::showWindowMenu(QWaylandInputDevice *seat)
-{
- if (m_toplevel && m_toplevel->isInitialized()) {
- QPoint position = seat->pointerSurfacePosition().toPoint();
- m_toplevel->show_window_menu(seat->wl_seat(), seat->serial(), position.x(), position.y());
- return true;
- }
- return false;
-}
-
-void QWaylandXdgSurfaceV6::setTitle(const QString &title)
-{
- if (m_toplevel)
- m_toplevel->set_title(title);
-}
-
-void QWaylandXdgSurfaceV6::setAppId(const QString &appId)
-{
- if (m_toplevel)
- m_toplevel->set_app_id(appId);
-}
-
-bool QWaylandXdgSurfaceV6::isExposed() const
-{
- return m_configured || m_pendingConfigureSerial;
-}
-
-bool QWaylandXdgSurfaceV6::handleExpose(const QRegion ®ion)
-{
- if (!isExposed() && !region.isEmpty()) {
- m_exposeRegion = region;
- return true;
- }
- return false;
-}
-
-void QWaylandXdgSurfaceV6::applyConfigure()
-{
- Q_ASSERT(m_pendingConfigureSerial != 0);
-
- if (m_toplevel)
- m_toplevel->applyConfigure();
-
- m_configured = true;
- ack_configure(m_pendingConfigureSerial);
-
- m_pendingConfigureSerial = 0;
-}
-
-bool QWaylandXdgSurfaceV6::wantsDecorations() const
-{
- return m_toplevel && !(m_toplevel->m_pending.states & Qt::WindowFullScreen);
-}
-
-void QWaylandXdgSurfaceV6::propagateSizeHints()
-{
- setSizeHints();
-
- if (m_toplevel && m_window)
- m_window->commit();
-}
-
-void QWaylandXdgSurfaceV6::setWindowGeometry(const QRect &rect)
-{
- set_window_geometry(rect.x(), rect.y(), rect.width(), rect.height());
-}
-
-void QWaylandXdgSurfaceV6::setSizeHints()
-{
- if (m_toplevel && m_window) {
- const int minWidth = qMax(0, m_window->windowMinimumSize().width());
- const int minHeight = qMax(0, m_window->windowMinimumSize().height());
- m_toplevel->set_min_size(minWidth, minHeight);
-
- int maxWidth = qMax(0, m_window->windowMaximumSize().width());
- if (maxWidth == QWINDOWSIZE_MAX)
- maxWidth = 0;
- int maxHeight = qMax(0, m_window->windowMaximumSize().height());
- if (maxHeight == QWINDOWSIZE_MAX)
- maxHeight = 0;
- m_toplevel->set_max_size(maxWidth, maxHeight);
- }
-}
-
-void QWaylandXdgSurfaceV6::requestWindowStates(Qt::WindowStates states)
-{
- if (m_toplevel)
- m_toplevel->requestWindowStates(states);
- else
- qCDebug(lcQpaWayland) << "Ignoring window states requested by non-toplevel.";
-}
-
-void QWaylandXdgSurfaceV6::setToplevel()
-{
- Q_ASSERT(!m_toplevel && !m_popup);
- m_toplevel = new Toplevel(this);
-}
-
-void QWaylandXdgSurfaceV6::setPopup(QWaylandWindow *parent)
-{
- Q_ASSERT(!m_toplevel && !m_popup);
-
- auto parentXdgSurface = static_cast(parent->shellSurface());
-
- auto positioner = new QtWayland::zxdg_positioner_v6(m_shell->create_positioner());
- // set_popup expects a position relative to the parent
- QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
- transientPos -= parent->geometry().topLeft();
- if (parent->decoration()) {
- transientPos.setX(transientPos.x() + parent->decoration()->margins().left());
- transientPos.setY(transientPos.y() + parent->decoration()->margins().top());
- }
- positioner->set_anchor_rect(transientPos.x(), transientPos.y(), 1, 1);
- positioner->set_anchor(QtWayland::zxdg_positioner_v6::anchor_top | QtWayland::zxdg_positioner_v6::anchor_left);
- positioner->set_gravity(QtWayland::zxdg_positioner_v6::gravity_bottom | QtWayland::zxdg_positioner_v6::gravity_right);
- positioner->set_size(m_window->geometry().width(), m_window->geometry().height());
- m_popup = new Popup(this, parentXdgSurface, positioner);
- positioner->destroy();
- delete positioner;
-}
-
-void QWaylandXdgSurfaceV6::setGrabPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial)
-{
- auto parentXdgSurface = static_cast(parent->shellSurface());
- auto *top = m_shell->m_topmostGrabbingPopup;
-
- if (top && top->m_xdgSurface != parentXdgSurface) {
- qCWarning(lcQpaWayland) << "setGrabPopup called with a parent," << parentXdgSurface
- << "which does not match the current topmost grabbing popup,"
- << top->m_xdgSurface << "According to the xdg-shell-v6 protocol, this"
- << "is not allowed. The wayland QPA plugin is currently handling"
- << "it by setting the parent to the topmost grabbing popup."
- << "Note, however, that this may cause positioning errors and"
- << "popups closing unxpectedly because xdg-shell-v6 mandate that child"
- << "popups close before parents";
- parent = top->m_xdgSurface->m_window;
- }
- setPopup(parent);
- m_popup->grab(device, serial);
-}
-
-void QWaylandXdgSurfaceV6::zxdg_surface_v6_configure(uint32_t serial)
-{
- m_pendingConfigureSerial = serial;
- if (!m_configured) {
- // We have to do the initial applyConfigure() immediately, since that is the expose.
- applyConfigure();
- m_exposeRegion = QRegion(QRect(QPoint(), m_window->geometry().size()));
- } else {
- // Later configures are probably resizes, so we have to queue them up for a time when we
- // are not painting to the window.
- m_window->applyConfigureWhenPossible();
- }
-
- if (!m_exposeRegion.isEmpty()) {
- m_window->handleExpose(m_exposeRegion);
- m_exposeRegion = QRegion();
- }
-}
-
-QWaylandXdgShellV6::QWaylandXdgShellV6(struct ::wl_registry *registry, uint32_t id, uint32_t availableVersion)
- : QtWayland::zxdg_shell_v6(registry, id, qMin(availableVersion, 1u))
-{
-}
-
-QWaylandXdgShellV6::~QWaylandXdgShellV6()
-{
- destroy();
-}
-
-QWaylandXdgSurfaceV6 *QWaylandXdgShellV6::getXdgSurface(QWaylandWindow *window)
-{
- return new QWaylandXdgSurfaceV6(this, get_xdg_surface(window->wlSurface()), window);
-}
-
-void QWaylandXdgShellV6::zxdg_shell_v6_ping(uint32_t serial)
-{
- pong(serial);
-}
-
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6_p.h b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6_p.h
deleted file mode 100644
index 757b982b9db..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6_p.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2017 Eurogiciel, author:
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QWAYLANDXDGSHELLV6_H
-#define QWAYLANDXDGSHELLV6_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qwayland-xdg-shell-unstable-v6.h"
-
-#include
-#include
-
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-class QWindow;
-
-namespace QtWaylandClient {
-
-class QWaylandWindow;
-class QWaylandInputDevice;
-class QWaylandXdgShellV6;
-
-class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgSurfaceV6 : public QWaylandShellSurface, public QtWayland::zxdg_surface_v6
-{
- Q_OBJECT
-public:
- QWaylandXdgSurfaceV6(QWaylandXdgShellV6 *shell, ::zxdg_surface_v6 *surface, QWaylandWindow *window);
- ~QWaylandXdgSurfaceV6() override;
-
- bool resize(QWaylandInputDevice *inputDevice, Qt::Edges edges) override;
- bool move(QWaylandInputDevice *inputDevice) override;
- bool showWindowMenu(QWaylandInputDevice *seat) override;
- void setTitle(const QString &title) override;
- void setAppId(const QString &appId) override;
-
- bool isExposed() const override;
- bool handleExpose(const QRegion &) override;
- bool handlesActiveState() const { return m_toplevel; }
- void applyConfigure() override;
- bool wantsDecorations() const override;
- void propagateSizeHints() override;
- void setWindowGeometry(const QRect &rect) override;
-
- void setSizeHints();
-
-protected:
- void requestWindowStates(Qt::WindowStates states) override;
- void zxdg_surface_v6_configure(uint32_t serial) override;
-
-private:
- class Toplevel: public QtWayland::zxdg_toplevel_v6
- {
- public:
- Toplevel(QWaylandXdgSurfaceV6 *xdgSurface);
- ~Toplevel() override;
-
- void applyConfigure();
-
- void zxdg_toplevel_v6_configure(int32_t width, int32_t height, wl_array *states) override;
- void zxdg_toplevel_v6_close() override;
-
- void requestWindowStates(Qt::WindowStates states);
-
- static resize_edge convertToResizeEdges(Qt::Edges edges);
-
- struct {
- QSize size = {0, 0};
- Qt::WindowStates states = Qt::WindowNoState;
- } m_pending, m_applied;
- QSize m_normalSize;
-
- QWaylandXdgSurfaceV6 *m_xdgSurface = nullptr;
- };
-
- class Popup : public QtWayland::zxdg_popup_v6 {
- public:
- Popup(QWaylandXdgSurfaceV6 *xdgSurface, QWaylandXdgSurfaceV6 *parent, QtWayland::zxdg_positioner_v6 *positioner);
- ~Popup() override;
-
- void grab(QWaylandInputDevice *seat, uint serial);
- void zxdg_popup_v6_popup_done() override;
-
- QWaylandXdgSurfaceV6 *m_xdgSurface = nullptr;
- QWaylandXdgSurfaceV6 *m_parent = nullptr;
- bool m_grabbing = false;
- };
-
- void setToplevel();
- void setPopup(QWaylandWindow *parent);
- void setGrabPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial);
-
- QWaylandXdgShellV6 *m_shell = nullptr;
- QWaylandWindow *m_window = nullptr;
- Toplevel *m_toplevel = nullptr;
- Popup *m_popup = nullptr;
- bool m_configured = false;
- QRegion m_exposeRegion;
- uint m_pendingConfigureSerial = 0;
-
- friend class QWaylandXdgShellV6;
-};
-
-class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShellV6 : public QtWayland::zxdg_shell_v6
-{
-public:
- QWaylandXdgShellV6(struct ::wl_registry *registry, uint32_t id, uint32_t availableVersion);
-
- QWaylandXdgSurfaceV6 *getXdgSurface(QWaylandWindow *window);
-
- ~QWaylandXdgShellV6() override;
-
-private:
- void zxdg_shell_v6_ping(uint32_t serial) override;
- QWaylandXdgSurfaceV6::Popup *m_topmostGrabbingPopup = nullptr;
-
- friend class QWaylandXdgSurfaceV6;
-};
-
-QT_END_NAMESPACE
-
-}
-
-#endif // QWAYLANDXDGSHELLV6_H
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
deleted file mode 100644
index 03164316514..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qwaylandxdgshellv6integration_p.h"
-
-#include
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-bool QWaylandXdgShellV6Integration::initialize(QWaylandDisplay *display)
-{
- for (QWaylandDisplay::RegistryGlobal global : display->globals()) {
- if (global.interface == QLatin1String("zxdg_shell_v6")) {
- m_xdgShell.reset(new QWaylandXdgShellV6(display->wl_registry(), global.id, global.version));
- break;
- }
- }
-
- if (!m_xdgShell) {
- qCDebug(lcQpaWayland) << "Couldn't find global zxdg_shell_v6 for xdg-shell unstable v6";
- return false;
- }
-
- return QWaylandShellIntegration::initialize(display);
-}
-
-QWaylandShellSurface *QWaylandXdgShellV6Integration::createShellSurface(QWaylandWindow *window)
-{
- return m_xdgShell->getXdgSurface(window);
-}
-
-void QWaylandXdgShellV6Integration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus)
-{
- if (newFocus) {
- auto *xdgSurface = qobject_cast(newFocus->shellSurface());
- if (xdgSurface && !xdgSurface->handlesActiveState())
- m_display->handleWindowActivated(newFocus);
- }
- if (oldFocus && qobject_cast(oldFocus->shellSurface())) {
- auto *xdgSurface = qobject_cast(oldFocus->shellSurface());
- if (xdgSurface && !xdgSurface->handlesActiveState())
- m_display->handleWindowDeactivated(oldFocus);
- }
-}
-
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
deleted file mode 100644
index 261f8cbb4f3..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QWAYLANDXDGSHELLV6INTEGRATION_P_H
-#define QWAYLANDXDGSHELLV6INTEGRATION_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qwaylandxdgshellv6_p.h"
-
-#include
-
-QT_BEGIN_NAMESPACE
-
-namespace QtWaylandClient {
-
-class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShellV6Integration : public QWaylandShellIntegration
-{
-public:
- QWaylandXdgShellV6Integration() {}
- bool initialize(QWaylandDisplay *display) override;
- QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override;
- void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) override;
-
-private:
- QScopedPointer m_xdgShell;
-};
-
-}
-
-QT_END_NAMESPACE
-
-#endif // QWAYLANDXDGSHELLV6INTEGRATION_P_H
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/xdg-shell-v6.json b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/xdg-shell-v6.json
deleted file mode 100644
index b1b8db31b4f..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/xdg-shell-v6.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "Keys":[ "xdg-shell-v6" ]
-}
diff --git a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/xdg-shell-v6.pro b/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/xdg-shell-v6.pro
deleted file mode 100644
index 3c1aaee818e..00000000000
--- a/src/plugins/platforms/wayland/plugins/shellintegration/xdg-shell-v6/xdg-shell-v6.pro
+++ /dev/null
@@ -1,25 +0,0 @@
-QT += gui-private waylandclient-private
-CONFIG += wayland-scanner
-
-QMAKE_USE += wayland-client
-qtConfig(xkbcommon): \
- QMAKE_USE_PRIVATE += xkbcommon
-
-WAYLANDCLIENTSOURCES += \
- ../../../3rdparty/protocol/xdg-shell-unstable-v6.xml
-
-HEADERS += \
- qwaylandxdgshellv6_p.h \
- qwaylandxdgshellv6integration_p.h \
-
-SOURCES += \
- main.cpp \
- qwaylandxdgshellv6.cpp \
- qwaylandxdgshellv6integration.cpp \
-
-OTHER_FILES += \
- xdg-shell-v6.json
-
-PLUGIN_TYPE = wayland-shell-integration
-PLUGIN_CLASS_NAME = QWaylandXdgShellV6IntegrationPlugin
-load(qt_plugin)
diff --git a/src/plugins/platforms/wayland/qwaylandintegration.cpp b/src/plugins/platforms/wayland/qwaylandintegration.cpp
index 764acc2d919..868cdd61548 100644
--- a/src/plugins/platforms/wayland/qwaylandintegration.cpp
+++ b/src/plugins/platforms/wayland/qwaylandintegration.cpp
@@ -399,13 +399,6 @@ void QWaylandIntegration::initializeShellIntegration()
preferredShells = targetKeys.split(QLatin1Char(';'));
} else {
preferredShells << QLatin1String("xdg-shell");
- preferredShells << QLatin1String("xdg-shell-v6");
- QString useXdgShell = QString::fromLocal8Bit(qgetenv("QT_WAYLAND_USE_XDG_SHELL"));
- if (!useXdgShell.isEmpty() && useXdgShell != QLatin1String("0")) {
- qWarning() << "QT_WAYLAND_USE_XDG_SHELL is deprecated, "
- "please specify the shell using QT_WAYLAND_SHELL_INTEGRATION instead";
- preferredShells << QLatin1String("xdg-shell-v5");
- }
preferredShells << QLatin1String("wl-shell") << QLatin1String("ivi-shell");
}
diff --git a/tests/auto/wayland/CMakeLists.txt b/tests/auto/wayland/CMakeLists.txt
index 5939853ccd4..783546045da 100644
--- a/tests/auto/wayland/CMakeLists.txt
+++ b/tests/auto/wayland/CMakeLists.txt
@@ -15,7 +15,6 @@ add_subdirectory(wl_connect)
add_subdirectory(xdgdecorationv1)
add_subdirectory(xdgoutput)
add_subdirectory(xdgshell)
-add_subdirectory(xdgshellv6)
if(QT_FEATURE_im)
add_subdirectory(inputcontext)
endif()
diff --git a/tests/auto/wayland/client.pro b/tests/auto/wayland/client.pro
index 46a3aa42ec0..7f5ffc0f7bd 100644
--- a/tests/auto/wayland/client.pro
+++ b/tests/auto/wayland/client.pro
@@ -15,7 +15,6 @@ SUBDIRS += \
wl_connect \
xdgdecorationv1 \
xdgoutput \
- xdgshell \
- xdgshellv6
+ xdgshell
qtConfig(im): SUBDIRS += inputcontext
diff --git a/tests/auto/wayland/client/.prev_CMakeLists.txt b/tests/auto/wayland/client/.prev_CMakeLists.txt
index cdcae2ff158..0aeb3f27f0c 100644
--- a/tests/auto/wayland/client/.prev_CMakeLists.txt
+++ b/tests/auto/wayland/client/.prev_CMakeLists.txt
@@ -14,7 +14,6 @@ qt_internal_add_test(tst_client
../shared_old/mockregion.cpp ../shared_old/mockregion.h
../shared_old/mocksurface.cpp ../shared_old/mocksurface.h
../shared_old/mockwlshell.cpp ../shared_old/mockwlshell.h
- ../shared_old/mockxdgshellv6.cpp ../shared_old/mockxdgshellv6.h
tst_client.cpp
INCLUDE_DIRECTORIES
../shared_old
@@ -33,7 +32,7 @@ qt6_generate_wayland_protocol_server_sources(tst_client
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/fullscreen-shell-unstable-v1.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/ivi-application.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/wayland.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell-unstable-v6.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell.xml
)
#### Keys ignored in scope 1:.:.:client.pro::
diff --git a/tests/auto/wayland/client/CMakeLists.txt b/tests/auto/wayland/client/CMakeLists.txt
index 86eb420e5ca..2b6df4a3d36 100644
--- a/tests/auto/wayland/client/CMakeLists.txt
+++ b/tests/auto/wayland/client/CMakeLists.txt
@@ -14,7 +14,6 @@ qt_internal_add_test(tst_client
../shared_old/mockregion.cpp ../shared_old/mockregion.h
../shared_old/mocksurface.cpp ../shared_old/mocksurface.h
../shared_old/mockwlshell.cpp ../shared_old/mockwlshell.h
- ../shared_old/mockxdgshellv6.cpp ../shared_old/mockxdgshellv6.h
tst_client.cpp
INCLUDE_DIRECTORIES
../shared_old
@@ -34,7 +33,7 @@ qt6_generate_wayland_protocol_server_sources(tst_client
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/fullscreen-shell-unstable-v1.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/ivi-application.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/wayland.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell-unstable-v6.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell.xml
)
#### Keys ignored in scope 1:.:.:client.pro::
diff --git a/tests/auto/wayland/client/run-with-all-shells.sh b/tests/auto/wayland/client/run-with-all-shells.sh
index 41f383900ea..5acd85a4644 100755
--- a/tests/auto/wayland/client/run-with-all-shells.sh
+++ b/tests/auto/wayland/client/run-with-all-shells.sh
@@ -3,4 +3,3 @@ set -ex
$@
env QT_WAYLAND_SHELL_INTEGRATION=wl-shell $@
env QT_WAYLAND_SHELL_INTEGRATION=ivi-shell $@
-env QT_WAYLAND_SHELL_INTEGRATION=xdg-shell-v6 $@
diff --git a/tests/auto/wayland/client/tst_client.cpp b/tests/auto/wayland/client/tst_client.cpp
index ad63eca0a7d..9c99220d0f8 100644
--- a/tests/auto/wayland/client/tst_client.cpp
+++ b/tests/auto/wayland/client/tst_client.cpp
@@ -167,7 +167,6 @@ public slots:
// and don't show up as false positives in the next test
QTRY_VERIFY(!compositor->surface());
QTRY_VERIFY(!compositor->iviSurface());
- QTRY_VERIFY(!compositor->xdgToplevelV6());
}
private slots:
@@ -212,9 +211,6 @@ void tst_WaylandClient::activeWindowFollowsKeyboardFocus()
QTRY_VERIFY(window.isExposed());
- if (compositor->xdgToplevelV6())
- QSKIP("On xdg-shell v6 focus is handled by configure events");
-
QCOMPARE(window.focusInEventCount, 0);
compositor->setKeyboardFocus(surface);
QTRY_COMPARE(window.focusInEventCount, 1);
diff --git a/tests/auto/wayland/fullscreenshellv1/.prev_CMakeLists.txt b/tests/auto/wayland/fullscreenshellv1/.prev_CMakeLists.txt
index c3e375c0f19..ca850796223 100644
--- a/tests/auto/wayland/fullscreenshellv1/.prev_CMakeLists.txt
+++ b/tests/auto/wayland/fullscreenshellv1/.prev_CMakeLists.txt
@@ -14,7 +14,6 @@ qt_internal_add_test(tst_client_fullscreenshellv1
../shared_old/mockregion.cpp ../shared_old/mockregion.h
../shared_old/mocksurface.cpp ../shared_old/mocksurface.h
../shared_old/mockwlshell.cpp ../shared_old/mockwlshell.h
- ../shared_old/mockxdgshellv6.cpp ../shared_old/mockxdgshellv6.h
tst_fullscreenshellv1.cpp
INCLUDE_DIRECTORIES
../shared_old
@@ -33,5 +32,5 @@ qt6_generate_wayland_protocol_server_sources(tst_client_fullscreenshellv1
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/fullscreen-shell-unstable-v1.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/ivi-application.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/wayland.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell-unstable-v6.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell.xml
)
diff --git a/tests/auto/wayland/fullscreenshellv1/CMakeLists.txt b/tests/auto/wayland/fullscreenshellv1/CMakeLists.txt
index 42d328a6481..4a64b9e2872 100644
--- a/tests/auto/wayland/fullscreenshellv1/CMakeLists.txt
+++ b/tests/auto/wayland/fullscreenshellv1/CMakeLists.txt
@@ -14,7 +14,6 @@ qt_internal_add_test(tst_client_fullscreenshellv1
../shared_old/mockregion.cpp ../shared_old/mockregion.h
../shared_old/mocksurface.cpp ../shared_old/mocksurface.h
../shared_old/mockwlshell.cpp ../shared_old/mockwlshell.h
- ../shared_old/mockxdgshellv6.cpp ../shared_old/mockxdgshellv6.h
tst_fullscreenshellv1.cpp
INCLUDE_DIRECTORIES
../shared_old
@@ -34,5 +33,5 @@ qt6_generate_wayland_protocol_server_sources(tst_client_fullscreenshellv1
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/fullscreen-shell-unstable-v1.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/ivi-application.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/wayland.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell-unstable-v6.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell.xml
)
diff --git a/tests/auto/wayland/iviapplication/.prev_CMakeLists.txt b/tests/auto/wayland/iviapplication/.prev_CMakeLists.txt
index ce9c8fd9122..a545e55f72f 100644
--- a/tests/auto/wayland/iviapplication/.prev_CMakeLists.txt
+++ b/tests/auto/wayland/iviapplication/.prev_CMakeLists.txt
@@ -14,7 +14,6 @@ qt_internal_add_test(tst_client_iviapplication
../shared_old/mockregion.cpp ../shared_old/mockregion.h
../shared_old/mocksurface.cpp ../shared_old/mocksurface.h
../shared_old/mockwlshell.cpp ../shared_old/mockwlshell.h
- ../shared_old/mockxdgshellv6.cpp ../shared_old/mockxdgshellv6.h
tst_iviapplication.cpp
INCLUDE_DIRECTORIES
../shared_old
@@ -33,5 +32,5 @@ qt6_generate_wayland_protocol_server_sources(tst_client_iviapplication
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/fullscreen-shell-unstable-v1.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/ivi-application.xml
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/wayland.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell-unstable-v6.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/3rdparty/protocol/xdg-shell.xml
)
diff --git a/tests/auto/wayland/nooutput/tst_nooutput.cpp b/tests/auto/wayland/nooutput/tst_nooutput.cpp
index 098d88d9908..b80a8178033 100644
--- a/tests/auto/wayland/nooutput/tst_nooutput.cpp
+++ b/tests/auto/wayland/nooutput/tst_nooutput.cpp
@@ -60,8 +60,17 @@ void tst_nooutput::noScreens()
window.resize(16, 16);
window.show();
- // We have to handle showing a window when there are no real outputs
- QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial);
+ QCOMPOSITOR_TRY_VERIFY(xdgToplevel());
+
+ QTRY_VERIFY(window.isVisible());
+ // The window should not be exposed before the first xdg_surface configure event
+ QTRY_VERIFY(!window.isExposed());
+
+ exec([=] {
+ xdgToplevel()->sendConfigure({0, 0}, {}); // Let the window decide the size
+ });
+
+ QTRY_VERIFY(window.isExposed());
}
QCOMPOSITOR_TEST_MAIN(tst_nooutput)
diff --git a/tests/auto/wayland/shared_old/mockcompositor.cpp b/tests/auto/wayland/shared_old/mockcompositor.cpp
index 6fd2ec6bb73..9353d894c38 100644
--- a/tests/auto/wayland/shared_old/mockcompositor.cpp
+++ b/tests/auto/wayland/shared_old/mockcompositor.cpp
@@ -31,11 +31,8 @@
#include "mockoutput.h"
#include "mocksurface.h"
#include "mockwlshell.h"
-#include "mockxdgshellv6.h"
#include "mockiviapplication.h"
-#include
-
#include
MockCompositor::MockCompositor()
{
@@ -199,17 +196,6 @@ void MockCompositor::sendIviSurfaceConfigure(const QSharedPointer toplevel, const QSize &size, const QList &states)
-{
- Command command = makeCommand(Impl::Compositor::sendXdgToplevelV6Configure, m_compositor);
- command.parameters << QVariant::fromValue(toplevel);
- command.parameters << QVariant::fromValue(size);
- QByteArray statesBytes(reinterpret_cast(states.data()),
- states.size() * static_cast(sizeof(uint)));
- command.parameters << statesBytes;
- processCommand(command);
-}
-
void MockCompositor::waitForStartDrag()
{
Command command = makeCommand(Impl::Compositor::waitForStartDrag, m_compositor);
@@ -254,16 +240,6 @@ QSharedPointer MockCompositor::iviSurface(int index)
return result;
}
-QSharedPointer MockCompositor::xdgToplevelV6(int index)
-{
- QSharedPointer result;
- lock();
- if (Impl::XdgToplevelV6 *toplevel = m_compositor->xdgShellV6()->toplevels().value(index, nullptr))
- result = toplevel->mockToplevel();
- unlock();
- return result;
-}
-
QSharedPointer MockCompositor::fullScreenShellV1Surface(int index)
{
QSharedPointer result;
@@ -356,7 +332,6 @@ Compositor::Compositor(MockCompositor *mockCompositor)
m_outputs.append(new Output(m_display, QSize(1920, 1080), QPoint(0, 0)));
m_iviApplication.reset(new IviApplication(m_display));
m_wlShell.reset(new WlShell(m_display));
- m_xdgShellV6.reset(new XdgShellV6(m_display));
m_fullScreenShellV1.reset(new FullScreenShellV1(m_display));
m_loop = wl_display_get_event_loop(m_display);
@@ -430,11 +405,6 @@ IviApplication *Compositor::iviApplication() const
return m_iviApplication.data();
}
-XdgShellV6 *Compositor::xdgShellV6() const
-{
- return m_xdgShellV6.data();
-}
-
FullScreenShellV1 *Compositor::fullScreenShellV1() const
{
return m_fullScreenShellV1.data();
@@ -480,10 +450,4 @@ IviSurface *Compositor::resolveIviSurface(const QVariant &v)
return mockIviSurface ? mockIviSurface->handle() : nullptr;
}
-XdgToplevelV6 *Compositor::resolveToplevel(const QVariant &v)
-{
- QSharedPointer mockToplevel = v.value>();
- return mockToplevel ? mockToplevel->handle() : nullptr;
-}
-
}
diff --git a/tests/auto/wayland/shared_old/mockcompositor.h b/tests/auto/wayland/shared_old/mockcompositor.h
index cbcf34cbd65..40fedf7dc90 100644
--- a/tests/auto/wayland/shared_old/mockcompositor.h
+++ b/tests/auto/wayland/shared_old/mockcompositor.h
@@ -29,7 +29,6 @@
#ifndef MOCKCOMPOSITOR_H
#define MOCKCOMPOSITOR_H
-#include "mockxdgshellv6.h"
#include "mockiviapplication.h"
#include "mockfullscreenshellv1.h"
#include "mockregion.h"
@@ -62,7 +61,6 @@ class Surface;
class Output;
class IviApplication;
class WlShell;
-class XdgShellV6;
class Region;
class Compositor
@@ -81,7 +79,6 @@ public:
QList