Top | Description |
#include <gdk/gdkwayland.h> struct wl_keyboard * gdk_wayland_device_get_wl_keyboard (GdkDevice *device
); struct wl_pointer * gdk_wayland_device_get_wl_pointer (GdkDevice *device
); struct wl_seat * gdk_wayland_device_get_wl_seat (GdkDevice *device
); struct wl_compositor * gdk_wayland_display_get_wl_compositor (GdkDisplay *display
); struct wl_display * gdk_wayland_display_get_wl_display (GdkDisplay *display
); struct wl_shell * gdk_wayland_display_get_wl_shell (GdkDisplay *display
); struct wl_shell_surface * gdk_wayland_window_get_wl_shell_surface (GdkWindow *window
); struct wl_surface * gdk_wayland_window_get_wl_surface (GdkWindow *window
); void gdk_wayland_window_set_use_custom_surface (GdkWindow *window
);
The functions in this section are specific to the GDK Wayland backend.
To use them, you need to include the <gdk/gdkwayland.h>
header and use the Wayland-specific pkg-config files to build your
application (either gdk-wayland-3.0
or
gtk+-wayland-3.0
).
To make your code compile with other GDK backends, guard backend-specific
calls by an ifdef as follows. Since GDK may be built with multiple
backends, you should also check for the backend that is in use (e.g. by
using the GDK_IS_WAYLAND_DISPLAY()
macro).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#ifdef GDK_WINDOWING_WAYLAND if (GDK_IS_WAYLAND_DISPLAY (display)) { /* make Wayland-specific calls here */ } else #endif #ifdef GDK_WINDOWING_X11 if (GDK_IS_X11_DISPLAY (display)) { /* make X11-specific calls here */ } else #endif g_error ("Unsupported GDK backend"); |
struct wl_keyboard * gdk_wayland_device_get_wl_keyboard (GdkDevice *device
);
Returns the Wayland wl_keyboard of a GdkDevice
|
a GdkDevice. [type GdkWaylandDevice] |
Returns : |
a Wayland wl_keyboard. [transfer none] |
Since 3.10
struct wl_pointer * gdk_wayland_device_get_wl_pointer (GdkDevice *device
);
Returns the Wayland wl_pointer of a GdkDevice
|
a GdkDevice. [type GdkWaylandDevice] |
Returns : |
a Wayland wl_pointer. [transfer none] |
Since 3.10
struct wl_seat * gdk_wayland_device_get_wl_seat (GdkDevice *device
);
Returns the Wayland wl_seat of a GdkDevice
|
a GdkDevice. [type GdkWaylandDevice] |
Returns : |
a Wayland wl_seat. [transfer none] |
Since 3.10
struct wl_compositor * gdk_wayland_display_get_wl_compositor
(GdkDisplay *display
);
Returns the Wayland global singleton compositor of a GdkDisplay
|
a GdkDisplay. [type GdkWaylandDisplay] |
Returns : |
a Wayland wl_compositor. [transfer none] |
Since 3.8
struct wl_display * gdk_wayland_display_get_wl_display (GdkDisplay *display
);
Returns the Wayland wl_display of a GdkDisplay
|
a GdkDisplay. [type GdkWaylandDisplay] |
Returns : |
a Wayland wl_display. [transfer none] |
Since 3.8
struct wl_shell * gdk_wayland_display_get_wl_shell (GdkDisplay *display
);
Returns the Wayland global singleton shell of a GdkDisplay
|
a GdkDisplay. [type GdkWaylandDisplay] |
Returns : |
a Wayland wl_shell. [transfer none] |
Since 3.8
struct wl_shell_surface * gdk_wayland_window_get_wl_shell_surface
(GdkWindow *window
);
Returns the Wayland shell surface of a GdkWindow
|
a GdkWindow. [type GdkWaylandWindow] |
Returns : |
a Wayland wl_shell_surface. [transfer none] |
Since 3.8
struct wl_surface * gdk_wayland_window_get_wl_surface (GdkWindow *window
);
Returns the Wayland surface of a GdkWindow
|
a GdkWindow. [type GdkWaylandWindow] |
Returns : |
a Wayland wl_surface. [transfer none] |
Since 3.8
void gdk_wayland_window_set_use_custom_surface
(GdkWindow *window
);
Marks a GdkWindow as a custom Wayland surface. The application is expected to register the surface as some type of surface using some Wayland interface.
A good example would be writing a panel or on-screen-keyboard as an out-of-process helper - as opposed to having those in the compositor process. In this case the underlying surface isn't a wl_shell surface and the panel or OSK client need to identify the wl_surface as a panel or OSK to the compositor. The assumption is that the compositor will expose a private interface to the special client that lets the client identify the wl_surface as a panel or such.
This function should be called before a GdkWindow is shown. This is best done by connecting to the "realized" signal:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
static void widget_realize_cb (GtkWidget *widget) { GdkWindow *window; struct wl_surface *surface; struct input_panel_surface *ip_surface; window = gtk_widget_get_window (widget); gdk_wayland_window_set_custom_surface (window); surface = gdk_wayland_window_get_wl_surface (window); ip_surface = input_panel_get_input_panel_surface (input_panel, surface); input_panel_surface_set_panel (ip_surface); } static void setup_window (GtkWindow *window) { g_signal_connect (window, "realize", G_CALLBACK (widget_realize_cb), NULL); } |
|
a GdkWindow. [type GdkWaylandWindow] |
Since 3.10