os_wayland.c 4.1 KB

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