#include "tablet-unstable-v2-client-protocol.h"
#include <wayland/xdg-shell-unstable-v6-client-protocol.h>
#include <wayland/xdg-foreign-unstable-v1-client-protocol.h>
+#include <wayland/xdg-foreign-unstable-v2-client-protocol.h>
#include <wayland/server-decoration-client-protocol.h>
#include "wm-button-layout-translation.h"
wl_registry_bind (display_wayland->wl_registry, id,
&zxdg_exporter_v1_interface, 1);
}
+ else if (strcmp (interface, "zxdg_exporter_v2") == 0)
+ {
+ display_wayland->xdg_exporter_v2 =
+ wl_registry_bind (display_wayland->wl_registry, id,
+ &zxdg_exporter_v2_interface, 1);
+ }
else if (strcmp (interface, "zxdg_importer_v1") == 0)
{
display_wayland->xdg_importer =
#include "gdkdevice-wayland-private.h"
#include <wayland/xdg-shell-unstable-v6-client-protocol.h>
+#include <wayland/xdg-foreign-unstable-v2-client-protocol.h>
#include <stdlib.h>
#include <stdio.h>
struct org_kde_kwin_server_decoration *server_decoration;
struct zxdg_exported_v1 *xdg_exported;
+ struct zxdg_exported_v2 *xdg_exported_v2;
struct {
GdkWaylandToplevelExported callback;
}
static void
-xdg_exported_handle2 (void *data,
- struct zxdg_exported_v1 *zxdg_exported_v1,
- const char *handle)
+xdg_exported_handle_v1 (void *data,
+ struct zxdg_exported_v1 *zxdg_exported_v1,
+ const char *handle)
{
g_task_return_pointer (G_TASK (data), g_strdup (handle), g_free);
g_object_unref (data);
}
-static const struct zxdg_exported_v1_listener xdg_exported_listener2 = {
- xdg_exported_handle2
+static const struct zxdg_exported_v1_listener xdg_exported_listener_v1 = {
+ xdg_exported_handle_v1
+};
+
+static void
+xdg_exported_handle_v2 (void *data,
+ struct zxdg_exported_v2 *zxdg_exported_v2,
+ const char *handle)
+{
+ g_task_return_pointer (G_TASK (data), g_strdup (handle), g_free);
+ g_object_unref (data);
+}
+
+static const struct zxdg_exported_v2_listener xdg_exported_listener_v2 = {
+ xdg_exported_handle_v2
};
static void
GdkSurface *surface = GDK_SURFACE (toplevel);
GdkDisplay *display = gdk_surface_get_display (GDK_SURFACE (toplevel));
GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
- struct zxdg_exported_v1 *xdg_exported;
GTask *task;
task = g_task_new (toplevel, cancellable, callback, user_data);
- if (!display_wayland->xdg_exporter)
+ if (display_wayland->xdg_exporter_v2)
+ {
+ wayland_toplevel->xdg_exported_v2 =
+ zxdg_exporter_v2_export_toplevel (display_wayland->xdg_exporter_v2,
+ gdk_wayland_surface_get_wl_surface (surface));
+ zxdg_exported_v2_add_listener (wayland_toplevel->xdg_exported_v2,
+ &xdg_exported_listener_v2, task);
+ }
+ else if (display_wayland->xdg_exporter)
+ {
+ wayland_toplevel->xdg_exported =
+ zxdg_exporter_v1_export (display_wayland->xdg_exporter,
+ gdk_wayland_surface_get_wl_surface (surface));
+ zxdg_exported_v1_add_listener (wayland_toplevel->xdg_exported,
+ &xdg_exported_listener_v1, task);
+ }
+ else
{
g_task_return_pointer (task, NULL, NULL);
g_object_unref (task);
return;
}
-
- xdg_exported =
- zxdg_exporter_v1_export (display_wayland->xdg_exporter,
- gdk_wayland_surface_get_wl_surface (surface));
-
- zxdg_exported_v1_add_listener (xdg_exported, &xdg_exported_listener2, task);
- wayland_toplevel->xdg_exported = xdg_exported;
}
static char *
static void
gdk_wayland_toplevel_real_unexport_handle (GdkToplevel *toplevel)
{
- GdkWaylandToplevel *wayland_toplevel;
+ GdkWaylandToplevel *wayland_toplevel = GDK_WAYLAND_TOPLEVEL (toplevel);
+ GdkDisplay *display = gdk_surface_get_display (GDK_SURFACE (toplevel));
+ GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
g_return_if_fail (GDK_IS_WAYLAND_TOPLEVEL (toplevel));
- wayland_toplevel = GDK_WAYLAND_TOPLEVEL (toplevel);
-
- g_return_if_fail (wayland_toplevel->xdg_exported);
-
- g_clear_pointer (&wayland_toplevel->xdg_exported,
- zxdg_exported_v1_destroy);
+ if (display_wayland->xdg_exporter_v2)
+ g_clear_pointer (&wayland_toplevel->xdg_exported_v2, zxdg_exported_v2_destroy);
+ else if (display_wayland->xdg_exporter)
+ g_clear_pointer (&wayland_toplevel->xdg_exported, zxdg_exported_v1_destroy);
}
static void
['xdg-shell', 'unstable', 'v6', ],
['xdg-shell', 'stable', ],
['xdg-foreign', 'unstable', 'v1', ],
+ ['xdg-foreign', 'unstable', 'v2', ],
['tablet', 'unstable', 'v2', ],
['keyboard-shortcuts-inhibit', 'unstable', 'v1', ],
['server-decoration', 'private' ],