Top |
struct wl_keyboard * | gdk_wayland_device_get_wl_keyboard () |
struct wl_pointer * | gdk_wayland_device_get_wl_pointer () |
struct wl_seat * | gdk_wayland_device_get_wl_seat () |
struct wl_compositor * | gdk_wayland_display_get_wl_compositor () |
struct wl_display * | gdk_wayland_display_get_wl_display () |
struct xdg_shell * | gdk_wayland_display_get_xdg_shell () |
struct wl_surface * | gdk_wayland_window_get_wl_surface () |
void | gdk_wayland_window_set_use_custom_surface () |
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
Since 3.10
struct wl_pointer *
gdk_wayland_device_get_wl_pointer (GdkDevice *device
);
Returns the Wayland wl_pointer of a GdkDevice
Since 3.10
struct wl_seat *
gdk_wayland_device_get_wl_seat (GdkDevice *device
);
Returns the Wayland wl_seat of a GdkDevice
Since 3.10
struct wl_compositor *
gdk_wayland_display_get_wl_compositor (GdkDisplay *display
);
Returns the Wayland global singleton compositor of a GdkDisplay
Since 3.8
struct wl_display *
gdk_wayland_display_get_wl_display (GdkDisplay *display
);
Returns the Wayland wl_display of a GdkDisplay
Since 3.8
struct xdg_shell *
gdk_wayland_display_get_xdg_shell (GdkDisplay *display
);
Returns the Wayland global singleton shell of a GdkDisplay
Since 3.8
struct wl_surface *
gdk_wayland_window_get_wl_surface (GdkWindow *window
);
Returns the Wayland surface of a GdkWindow
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 an xdg_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 “realize” 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); } |
Since 3.10