os_wayland.c raw

   1  // SPDX-License-Identifier: Unlicense OR MIT
   2  
   3  // +build linux,!android,!nowayland freebsd
   4  
   5  #include <wayland-client.h>
   6  #include "wayland_xdg_shell.h"
   7  #include "wayland_text_input.h"
   8  #include "_cgo_export.h"
   9  
  10  const struct wl_registry_listener gio_registry_listener = {
  11  	// Cast away const parameter.
  12  	.global = (void (*)(void *, struct wl_registry *, uint32_t,  const char *, uint32_t))gio_onRegistryGlobal,
  13  	.global_remove = gio_onRegistryGlobalRemove
  14  };
  15  
  16  const struct wl_surface_listener gio_surface_listener = {
  17  	.enter = gio_onSurfaceEnter,
  18  	.leave = gio_onSurfaceLeave,
  19  };
  20  
  21  const struct xdg_surface_listener gio_xdg_surface_listener = {
  22  	.configure = gio_onXdgSurfaceConfigure,
  23  };
  24  
  25  const struct xdg_toplevel_listener gio_xdg_toplevel_listener = {
  26  	.configure = gio_onToplevelConfigure,
  27  	.close = gio_onToplevelClose,
  28  };
  29  
  30  static void xdg_wm_base_handle_ping(void *data, struct xdg_wm_base *wm, uint32_t serial) {
  31  	xdg_wm_base_pong(wm, serial);
  32  }
  33  
  34  const struct xdg_wm_base_listener gio_xdg_wm_base_listener = {
  35  	.ping = xdg_wm_base_handle_ping,
  36  };
  37  
  38  const struct wl_callback_listener gio_callback_listener = {
  39  	.done = gio_onFrameDone,
  40  };
  41  
  42  const struct wl_output_listener gio_output_listener = {
  43  	// Cast away const parameter.
  44  	.geometry = (void (*)(void *, struct wl_output *, int32_t,  int32_t,  int32_t,  int32_t,  int32_t,  const char *, const char *, int32_t))gio_onOutputGeometry,
  45  	.mode = gio_onOutputMode,
  46  	.done = gio_onOutputDone,
  47  	.scale = gio_onOutputScale,
  48  };
  49  
  50  const struct wl_seat_listener gio_seat_listener = {
  51  	.capabilities = gio_onSeatCapabilities,
  52  	// Cast away const parameter.
  53  	.name = (void (*)(void *, struct wl_seat *, const char *))gio_onSeatName,
  54  };
  55  
  56  const struct wl_pointer_listener gio_pointer_listener = {
  57  	.enter = gio_onPointerEnter,
  58  	.leave = gio_onPointerLeave,
  59  	.motion = gio_onPointerMotion,
  60  	.button = gio_onPointerButton,
  61  	.axis = gio_onPointerAxis,
  62  	.frame = gio_onPointerFrame,
  63  	.axis_source = gio_onPointerAxisSource,
  64  	.axis_stop = gio_onPointerAxisStop,
  65  	.axis_discrete = gio_onPointerAxisDiscrete,
  66  };
  67  
  68  const struct wl_touch_listener gio_touch_listener = {
  69  	.down = gio_onTouchDown,
  70  	.up = gio_onTouchUp,
  71  	.motion = gio_onTouchMotion,
  72  	.frame = gio_onTouchFrame,
  73  	.cancel = gio_onTouchCancel,
  74  };
  75  
  76  const struct wl_keyboard_listener gio_keyboard_listener = {
  77  	.keymap = gio_onKeyboardKeymap,
  78  	.enter = gio_onKeyboardEnter,
  79  	.leave = gio_onKeyboardLeave,
  80  	.key = gio_onKeyboardKey,
  81  	.modifiers = gio_onKeyboardModifiers,
  82  	.repeat_info = gio_onKeyboardRepeatInfo
  83  };
  84  
  85  const struct zwp_text_input_v3_listener gio_zwp_text_input_v3_listener = {
  86  	.enter = gio_onTextInputEnter,
  87  	.leave = gio_onTextInputLeave,
  88  	// Cast away const parameter.
  89  	.preedit_string = (void (*)(void *, struct zwp_text_input_v3 *, const char *, int32_t,  int32_t))gio_onTextInputPreeditString,
  90  	.commit_string = (void (*)(void *, struct zwp_text_input_v3 *, const char *))gio_onTextInputCommitString,
  91  	.delete_surrounding_text = gio_onTextInputDeleteSurroundingText,
  92  	.done = gio_onTextInputDone
  93  };
  94  
  95  const struct wl_data_device_listener gio_data_device_listener = {
  96  	.data_offer = gio_onDataDeviceOffer,
  97  	.enter = gio_onDataDeviceEnter,
  98  	.leave = gio_onDataDeviceLeave,
  99  	.motion = gio_onDataDeviceMotion,
 100  	.drop = gio_onDataDeviceDrop,
 101  	.selection = gio_onDataDeviceSelection,
 102  };
 103  
 104  const struct wl_data_offer_listener gio_data_offer_listener = {
 105  	.offer = (void (*)(void *, struct wl_data_offer *, const char *))gio_onDataOfferOffer,
 106  	.source_actions = gio_onDataOfferSourceActions,
 107  	.action = gio_onDataOfferAction,
 108  };
 109  
 110  const struct wl_data_source_listener gio_data_source_listener = {
 111  	.target = (void (*)(void *, struct wl_data_source *, const char *))gio_onDataSourceTarget,
 112  	.send = (void (*)(void *, struct wl_data_source *, const char *, int32_t))gio_onDataSourceSend,
 113  	.cancelled = gio_onDataSourceCancelled,
 114  	.dnd_drop_performed = gio_onDataSourceDNDDropPerformed,
 115  	.dnd_finished = gio_onDataSourceDNDFinished,
 116  	.action = gio_onDataSourceAction,
 117  };
 118