aboutsummaryrefslogtreecommitdiff
path: root/vendor/gioui.org/app/os_wayland.c
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gioui.org/app/os_wayland.c')
-rw-r--r--vendor/gioui.org/app/os_wayland.c119
1 files changed, 119 insertions, 0 deletions
diff --git a/vendor/gioui.org/app/os_wayland.c b/vendor/gioui.org/app/os_wayland.c
new file mode 100644
index 0000000..b137e1f
--- /dev/null
+++ b/vendor/gioui.org/app/os_wayland.c
@@ -0,0 +1,119 @@
+// SPDX-License-Identifier: Unlicense OR MIT
+
+//go:build ((linux && !android) || freebsd) && !nowayland
+// +build linux,!android freebsd
+// +build !nowayland
+
+#include <wayland-client.h>
+#include "wayland_xdg_shell.h"
+#include "wayland_text_input.h"
+#include "_cgo_export.h"
+
+const struct wl_registry_listener gio_registry_listener = {
+ // Cast away const parameter.
+ .global = (void (*)(void *, struct wl_registry *, uint32_t, const char *, uint32_t))gio_onRegistryGlobal,
+ .global_remove = gio_onRegistryGlobalRemove
+};
+
+const struct wl_surface_listener gio_surface_listener = {
+ .enter = gio_onSurfaceEnter,
+ .leave = gio_onSurfaceLeave,
+};
+
+const struct xdg_surface_listener gio_xdg_surface_listener = {
+ .configure = gio_onXdgSurfaceConfigure,
+};
+
+const struct xdg_toplevel_listener gio_xdg_toplevel_listener = {
+ .configure = gio_onToplevelConfigure,
+ .close = gio_onToplevelClose,
+};
+
+static void xdg_wm_base_handle_ping(void *data, struct xdg_wm_base *wm, uint32_t serial) {
+ xdg_wm_base_pong(wm, serial);
+}
+
+const struct xdg_wm_base_listener gio_xdg_wm_base_listener = {
+ .ping = xdg_wm_base_handle_ping,
+};
+
+const struct wl_callback_listener gio_callback_listener = {
+ .done = gio_onFrameDone,
+};
+
+const struct wl_output_listener gio_output_listener = {
+ // Cast away const parameter.
+ .geometry = (void (*)(void *, struct wl_output *, int32_t, int32_t, int32_t, int32_t, int32_t, const char *, const char *, int32_t))gio_onOutputGeometry,
+ .mode = gio_onOutputMode,
+ .done = gio_onOutputDone,
+ .scale = gio_onOutputScale,
+};
+
+const struct wl_seat_listener gio_seat_listener = {
+ .capabilities = gio_onSeatCapabilities,
+ // Cast away const parameter.
+ .name = (void (*)(void *, struct wl_seat *, const char *))gio_onSeatName,
+};
+
+const struct wl_pointer_listener gio_pointer_listener = {
+ .enter = gio_onPointerEnter,
+ .leave = gio_onPointerLeave,
+ .motion = gio_onPointerMotion,
+ .button = gio_onPointerButton,
+ .axis = gio_onPointerAxis,
+ .frame = gio_onPointerFrame,
+ .axis_source = gio_onPointerAxisSource,
+ .axis_stop = gio_onPointerAxisStop,
+ .axis_discrete = gio_onPointerAxisDiscrete,
+};
+
+const struct wl_touch_listener gio_touch_listener = {
+ .down = gio_onTouchDown,
+ .up = gio_onTouchUp,
+ .motion = gio_onTouchMotion,
+ .frame = gio_onTouchFrame,
+ .cancel = gio_onTouchCancel,
+};
+
+const struct wl_keyboard_listener gio_keyboard_listener = {
+ .keymap = gio_onKeyboardKeymap,
+ .enter = gio_onKeyboardEnter,
+ .leave = gio_onKeyboardLeave,
+ .key = gio_onKeyboardKey,
+ .modifiers = gio_onKeyboardModifiers,
+ .repeat_info = gio_onKeyboardRepeatInfo
+};
+
+const struct zwp_text_input_v3_listener gio_zwp_text_input_v3_listener = {
+ .enter = gio_onTextInputEnter,
+ .leave = gio_onTextInputLeave,
+ // Cast away const parameter.
+ .preedit_string = (void (*)(void *, struct zwp_text_input_v3 *, const char *, int32_t, int32_t))gio_onTextInputPreeditString,
+ .commit_string = (void (*)(void *, struct zwp_text_input_v3 *, const char *))gio_onTextInputCommitString,
+ .delete_surrounding_text = gio_onTextInputDeleteSurroundingText,
+ .done = gio_onTextInputDone
+};
+
+const struct wl_data_device_listener gio_data_device_listener = {
+ .data_offer = gio_onDataDeviceOffer,
+ .enter = gio_onDataDeviceEnter,
+ .leave = gio_onDataDeviceLeave,
+ .motion = gio_onDataDeviceMotion,
+ .drop = gio_onDataDeviceDrop,
+ .selection = gio_onDataDeviceSelection,
+};
+
+const struct wl_data_offer_listener gio_data_offer_listener = {
+ .offer = (void (*)(void *, struct wl_data_offer *, const char *))gio_onDataOfferOffer,
+ .source_actions = gio_onDataOfferSourceActions,
+ .action = gio_onDataOfferAction,
+};
+
+const struct wl_data_source_listener gio_data_source_listener = {
+ .target = (void (*)(void *, struct wl_data_source *, const char *))gio_onDataSourceTarget,
+ .send = (void (*)(void *, struct wl_data_source *, const char *, int32_t))gio_onDataSourceSend,
+ .cancelled = gio_onDataSourceCancelled,
+ .dnd_drop_performed = gio_onDataSourceDNDDropPerformed,
+ .dnd_finished = gio_onDataSourceDNDFinished,
+ .action = gio_onDataSourceAction,
+};