6 # include <wayland-client.h>
7 # include <wayland-cursor.h>
8 # include <xkbcommon/xkbcommon.h>
9 # include "Ecore_Wayland2.h"
11 # define WL_HIDE_DEPRECATED
12 # include <wayland-server.h>
20 # define EAPI __attribute__ ((visibility("default")))
32 #define ECORE_WL2_SURFACE_INTERFACE_VERSION 1
35 typedef struct _Ecore_Wl2_Output Ecore_Wl2_Output;
37 typedef struct _Ecore_Wl2_Seat Ecore_Wl2_Seat;
39 typedef struct _Ecore_Wl2_Pointer Ecore_Wl2_Pointer;
41 typedef struct _Ecore_Wl2_Keyboard Ecore_Wl2_Keyboard;
43 typedef struct _Ecore_Wl2_Touch Ecore_Wl2_Touch;
45 typedef struct _Ecore_Wl2_Offer Ecore_Wl2_Offer;
47 typedef struct _Ecore_Wl2_Surface Ecore_Wl2_Surface;
48 // TIZEN_ONLY(20171109): support a tizen_input_device_manager interface
50 typedef struct _Ecore_Wl2_Tizen_Input_Eo_Device Ecore_Wl2_Tizen_Input_Eo_Device;
52 typedef struct _Ecore_Wl2_Tizen_Input_Device Ecore_Wl2_Tizen_Input_Device;
56 * @ingroup Ecore_Wl2_Group
58 * @typedef Ecore_Wl2_Event_Connect
59 * Type for Ecore_Wl2_Event_Connect
61 typedef struct _Ecore_Wl2_Event_Connection Ecore_Wl2_Event_Connect;
64 * @ingroup Ecore_Wl2_Group
66 * @typedef Ecore_Wl2_Event_Disconnect
67 * Type for Ecore_Wl2_Event_Disconnect
69 typedef struct _Ecore_Wl2_Event_Connection Ecore_Wl2_Event_Disconnect;
71 struct _Ecore_Wl2_Event_Connection
73 Ecore_Wl2_Display *display;
77 * @ingroup Ecore_Wl2_Group
79 * @typedef Ecore_Wl2_Event_Global
80 * Type for _Ecore_Wl2_Event_Global
82 typedef struct _Ecore_Wl2_Event_Global
84 Ecore_Wl2_Display *display;
85 Eina_Stringshare *interface;
86 unsigned int id, version;
87 } Ecore_Wl2_Event_Global;
90 * @ingroup Ecore_Wl2_Group
92 * @typedef Ecore_Wl2_Event_Window_Configure
93 * Type for Ecore_Wl2_Event_Window_Configure
95 typedef struct _Ecore_Wl2_Event_Window_Configure
97 unsigned int win, event_win, edges;
103 } Ecore_Wl2_Event_Window_Configure;
106 * @ingroup Ecore_Wl2_Group
108 * @typedef Ecore_Wl2_Event_Window_Configure_Complete
109 * Type for Ecore_Wl2_Event_Window_Configure_Complete
111 typedef struct _Ecore_Wl2_Event_Window_Configure_Complete
114 } Ecore_Wl2_Event_Window_Configure_Complete;
117 * @ingroup Ecore_Wl2_Group
119 * @typedef Ecore_Wl2_Event_Window_Show
120 * Type for Ecore_Wl2_Event_Window_Show
122 typedef struct _Ecore_Wl2_Event_Window_Show
125 unsigned int parent_win;
126 unsigned int event_win;
128 unsigned int data[4];
130 } Ecore_Wl2_Event_Window_Show;
133 * @ingroup Ecore_Wl2_Group
135 * @typedef Ecore_Wl2_Event_Window_Hide
136 * Type for Ecore_Wl2_Event_Window_Hide
138 typedef struct _Ecore_Wl2_Event_Window_Hide
141 unsigned int parent_win;
142 unsigned int event_win;
143 } Ecore_Wl2_Event_Window_Hide;
146 * @ingroup Ecore_Wl2_Group
148 * @typedef Ecore_Wl2_Event_Window_Activate
149 * Type for Ecore_Wl2_Event_Window_Activate
151 typedef struct _Ecore_Wl2_Event_Window_Activate
154 unsigned int parent_win;
155 unsigned int event_win;
156 } Ecore_Wl2_Event_Window_Activate;
159 * @ingroup Ecore_Wl2_Group
161 * @typedef Ecore_Wl2_Event_Window_Deactivate
162 * Type for Ecore_Wl2_Event_Window_Deactivate
164 typedef struct _Ecore_Wl2_Event_Window_Deactivate
167 unsigned int parent_win;
168 unsigned int event_win;
169 } Ecore_Wl2_Event_Window_Deactivate;
171 typedef struct _Ecore_Wl2_Event_Window_Common
174 unsigned int parent_win;
175 unsigned int event_win;
176 } Ecore_Wl2_Event_Window_Common;
179 * @ingroup Ecore_Wl2_Group
181 * @typedef Ecore_Wl2_Event_Window_Lower
182 * Type for Ecore_Wl2_Event_Window_Lower
184 typedef struct _Ecore_Wl2_Event_Window_Lower
187 unsigned int timestamp;
188 } Ecore_Wl2_Event_Window_Lower;
190 /* matches protocol values */
194 ECORE_WL2_DRAG_ACTION_NONE = 0,
195 ECORE_WL2_DRAG_ACTION_COPY = 1,
196 ECORE_WL2_DRAG_ACTION_MOVE = 2,
197 ECORE_WL2_DRAG_ACTION_ASK = 4,
198 ECORE_WL2_DRAG_ACTION_LAST = 5,
199 } Ecore_Wl2_Drag_Action;
204 ECORE_WL2_SEAT_CAPABILITIES_NONE = 0,
205 ECORE_WL2_SEAT_CAPABILITIES_POINTER = 1,
206 ECORE_WL2_SEAT_CAPABILITIES_KEYBOARD = 2,
207 ECORE_WL2_SEAT_CAPABILITIES_TOUCH = 4
208 } Ecore_Wl2_Seat_Capabilities;
211 typedef struct _Ecore_Wl2_Global
213 Eina_Stringshare *interface;
214 unsigned int id, version;
215 Ecore_Wl2_Display *display;
219 typedef struct _Ecore_Wl2_Event_Focus_In
222 unsigned int timestamp;
223 Eo *dev; //The seat device
224 Ecore_Wl2_Display *display;
225 } Ecore_Wl2_Event_Focus_In;
228 typedef struct _Ecore_Wl2_Event_Focus_Out
231 unsigned int timestamp;
232 Eo *dev; //The seat device
233 Ecore_Wl2_Display *display;
234 } Ecore_Wl2_Event_Focus_Out;
237 typedef struct _Ecore_Wl2_Event_Dnd_Enter
239 unsigned int win, source;
240 Ecore_Wl2_Offer *offer;
243 Ecore_Wl2_Display *display;
244 } Ecore_Wl2_Event_Dnd_Enter;
247 typedef struct _Ecore_Wl2_Event_Dnd_Leave
249 unsigned int win, source;
250 Ecore_Wl2_Offer *offer;
252 Ecore_Wl2_Display *display;
253 } Ecore_Wl2_Event_Dnd_Leave;
256 typedef struct _Ecore_Wl2_Event_Dnd_Motion
258 unsigned int win, source;
259 Ecore_Wl2_Offer *offer;
262 Ecore_Wl2_Display *display;
263 } Ecore_Wl2_Event_Dnd_Motion;
266 typedef struct _Ecore_Wl2_Event_Dnd_Drop
268 unsigned int win, source;
270 Ecore_Wl2_Offer *offer;
272 Ecore_Wl2_Display *display;
273 } Ecore_Wl2_Event_Dnd_Drop;
276 typedef struct _Ecore_Wl2_Event_Dnd_End
278 unsigned int win, source;
280 Ecore_Wl2_Display *display;
281 } Ecore_Wl2_Event_Dnd_End;
284 struct _Ecore_Wl2_Event_Data_Source_Event
286 unsigned int win, source;
287 Ecore_Wl2_Drag_Action action;
290 Ecore_Wl2_Display *display;
294 typedef struct Ecore_Wl2_Event_Data_Source_End
296 unsigned int win, source;
297 Ecore_Wl2_Drag_Action action;
300 Ecore_Wl2_Display *display;
302 } Ecore_Wl2_Event_Data_Source_End;
305 typedef struct _Ecore_Wl2_Event_Data_Source_Event Ecore_Wl2_Event_Data_Source_Drop;
307 typedef struct _Ecore_Wl2_Event_Data_Source_Event Ecore_Wl2_Event_Data_Source_Action;
310 typedef struct _Ecore_Wl2_Event_Data_Source_Target
314 Ecore_Wl2_Display *display;
315 } Ecore_Wl2_Event_Data_Source_Target;
318 typedef struct _Ecore_Wl2_Event_Data_Source_Send
324 Ecore_Wl2_Display *display;
325 } Ecore_Wl2_Event_Data_Source_Send;
328 typedef struct Ecore_Wl2_Event_Seat_Selection
330 //TIZEN_ONLY(20180724): Supporting copy and paste for cbhm
335 Ecore_Wl2_Display *display;
336 } Ecore_Wl2_Event_Seat_Selection;
339 typedef struct _Ecore_Wl2_Event_Seat_Name
341 Eina_Stringshare *name;
343 Ecore_Wl2_Display *display;
344 } Ecore_Wl2_Event_Seat_Name;
347 typedef struct _Ecore_Wl2_Event_Seat_Capabilities
350 Eina_Bool pointer_enabled : 1;
351 Eina_Bool keyboard_enabled : 1;
352 Eina_Bool touch_enabled : 1;
353 Ecore_Wl2_Display *display;
354 } Ecore_Wl2_Event_Seat_Capabilities;
359 ECORE_WL2_DEVICE_TYPE_SEAT,
360 ECORE_WL2_DEVICE_TYPE_POINTER,
361 ECORE_WL2_DEVICE_TYPE_KEYBOARD,
362 ECORE_WL2_DEVICE_TYPE_TOUCH
363 } Ecore_Wl2_Device_Type;
366 typedef struct _Ecore_Wl2_Event_Device
370 unsigned int seat_id;
371 Ecore_Wl2_Device_Type type;
372 } Ecore_Wl2_Event_Device;
377 ECORE_WL2_SELECTION_CNP,
378 ECORE_WL2_SELECTION_DND
379 } Ecore_Wl2_Selection_Type;
384 ECORE_WL2_WINDOW_STATE_NONE = 0,
385 ECORE_WL2_WINDOW_STATE_FULLSCREEN = (1 << 0),
386 ECORE_WL2_WINDOW_STATE_MAXIMIZED = (1 << 1),
387 } Ecore_Wl2_Window_States;
390 typedef struct _Ecore_Wl2_Event_Input_Keymap_Changed
393 Ecore_Wl2_Display *display;
394 } Ecore_Wl2_Event_Seat_Keymap_Changed;
397 typedef struct Ecore_Wl2_Event_Seat_Keyboard_Repeat_Changed
400 Ecore_Wl2_Display *display;
401 } Ecore_Wl2_Event_Seat_Keyboard_Repeat_Changed;
404 typedef struct _Ecore_Wl2_Event_Sync_Done
406 Ecore_Wl2_Display *display;
407 } Ecore_Wl2_Event_Sync_Done;
410 typedef struct _Ecore_Wl2_Event_Offer_Data_Ready
412 Ecore_Wl2_Offer *offer;
415 const char *mimetype;
417 Ecore_Wl2_Display *display;
418 } Ecore_Wl2_Event_Offer_Data_Ready;
421 typedef struct _Ecore_Wl2_Event_Output_Transform
423 Ecore_Wl2_Output *output;
424 int transform, old_transform;
425 } Ecore_Wl2_Event_Output_Transform;
428 typedef struct _Ecore_Wl2_Event_Window_Rotation
431 int rotation, w, h, angle;
432 Eina_Bool resize : 1;
433 } Ecore_Wl2_Event_Window_Rotation;
436 typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Prepare;
438 typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Prepare_Done;
440 typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Request;
442 typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Done;
445 typedef struct _Ecore_Wl2_Event_Window_Iconify_State_Change
448 unsigned int iconified;
450 } Ecore_Wl2_Event_Window_Iconify_State_Change;
453 typedef enum _Ecore_Wl2_Window_Type
455 ECORE_WL2_WINDOW_TYPE_NONE,
456 ECORE_WL2_WINDOW_TYPE_TOPLEVEL,
457 ECORE_WL2_WINDOW_TYPE_MENU,
458 ECORE_WL2_WINDOW_TYPE_DND,
459 ECORE_WL2_WINDOW_TYPE_CUSTOM,
460 ECORE_WL2_WINDOW_TYPE_NOTIFICATION, /** @since 1.20 */
461 ECORE_WL2_WINDOW_TYPE_UTILITY, /** @since 1.20 */
462 ECORE_WL2_WINDOW_TYPE_DIALOG, /** @since 1.20 */
463 ECORE_WL2_WINDOW_TYPE_DOCK, /** @since 1.20 */
464 ECORE_WL2_WINDOW_TYPE_SPLASH, /** @since 1.20 */
465 ECORE_WL2_WINDOW_TYPE_DESKTOP,
466 ECORE_WL2_WINDOW_TYPE_LAST
467 } Ecore_Wl2_Window_Type;
469 // TIZEN_ONLY(20171107): added wl enumerations from ecore_wayland to ecore_wl2
471 typedef enum _Ecore_Wl2_Window_Visibility_Type
473 ECORE_WL2_WINDOW_VISIBILITY_TYPE_UNKNOWN = 0,
474 ECORE_WL2_WINDOW_VISIBILITY_TYPE_UNOBSCURED = 1,
475 ECORE_WL2_WINDOW_VISIBILITY_TYPE_PARTIALLY_OBSCURED = 2,
476 ECORE_WL2_WINDOW_VISIBILITY_TYPE_FULLY_OBSCURED = 3,
477 ECORE_WL2_WINDOW_VISIBILITY_TYPE_PRE_UNOBSCURED = 4,
478 } Ecore_Wl2_Window_Visibility_Type;
481 typedef enum _Ecore_Wl2_Window_Stack_Mode
483 ECORE_WL2_WINDOW_STACK_NONE = 0,
484 ECORE_WL2_WINDOW_STACK_ABOVE = 1,
485 ECORE_WL2_WINDOW_STACK_BELOW = 2,
486 } Ecore_Wl2_Window_Stack_Mode;
489 typedef enum _Ecore_Wl2_Conformant_Part_Type
491 ECORE_WL2_INDICATOR_PART = 0,
492 ECORE_WL2_KEYBOARD_PART = 1,
493 ECORE_WL2_CLIPBOARD_PART = 2
494 } Ecore_Wl2_Conformant_Part_Type;
497 typedef enum _Ecore_Wl2_Virtual_Keyboard_State
499 ECORE_WL2_VIRTUAL_KEYBOARD_STATE_UNKNOWN = 0,
500 ECORE_WL2_VIRTUAL_KEYBOARD_STATE_OFF,
501 ECORE_WL2_VIRTUAL_KEYBOARD_STATE_ON,
502 } Ecore_Wl2_Virtual_Keyboard_State;
505 typedef enum _Ecore_Wl2_Indicator_State
507 ECORE_WL2_INDICATOR_STATE_UNKNOWN = 0,
508 ECORE_WL2_INDICATOR_STATE_OFF,
509 ECORE_WL2_INDICATOR_STATE_ON
510 } Ecore_Wl2_Indicator_State;
513 typedef enum _Ecore_Wl2_Indicator_Opacity_Mode
515 ECORE_WL2_INDICATOR_OPACITY_UNKNOWN = 0,
516 ECORE_WL2_INDICATOR_OPAQUE,
517 ECORE_WL2_INDICATOR_TRANSLUCENT,
518 ECORE_WL2_INDICATOR_TRANSPARENT,
519 ECORE_WL2_INDICATOR_BG_TRANSPARENT,
520 } Ecore_Wl2_Indicator_Opacity_Mode;
523 typedef enum _Ecore_Wl2_Indicator_Visible_Type
525 ECORE_WL2_INDICATOR_VISIBLE_TYPE_HIDDEN = 0,
526 ECORE_WL2_INDICATOR_VISIBLE_TYPE_SHOWN,
527 } Ecore_Wl2_Indicator_Visible_Type;
530 typedef enum _Ecore_Wl2_Clipboard_State
532 ECORE_WL2_CLIPBOARD_STATE_UNKNOWN = 0,
533 ECORE_WL2_CLIPBOARD_STATE_OFF,
534 ECORE_WL2_CLIPBOARD_STATE_ON
535 } Ecore_Wl2_Clipboard_State;
538 // TIZEN_ONLY(20221121): support a maximize direction
539 typedef enum _Ecore_Wl2_Maximize_Direction
541 ECORE_WL2_MAXIMIZE_DIRECTION_NONE, // unmaximize
542 ECORE_WL2_MAXIMIZE_DIRECTION_ALL, // maximize to full screen
543 ECORE_WL2_MAXIMIZE_DIRECTION_LEFT, // maximize to left side of screen
544 ECORE_WL2_MAXIMIZE_DIRECTION_RIGHT, // maximize to right side of screen
545 } Ecore_Wl2_Maximize_Direction;
549 typedef struct _Ecore_Wl2_Event_Aux_Hint_Allowed
553 Ecore_Wl2_Display *display;
554 } Ecore_Wl2_Event_Aux_Hint_Allowed;
557 typedef struct _Ecore_Wl2_Event_Aux_Hint_Supported
560 Ecore_Wl2_Display *display;
561 } Ecore_Wl2_Event_Aux_Hint_Supported;
564 typedef struct Ecore_Wl2_Event_Aux_Message
567 Eina_Stringshare *key;
568 Eina_Stringshare *val;
570 Ecore_Wl2_Display *display;
571 } Ecore_Wl2_Event_Aux_Message;
574 typedef struct Ecore_Wl2_Event_Window_Offscreen
577 } Ecore_Wl2_Event_Window_Offscreen;
580 typedef struct _Ecore_Wl2_Buffer Ecore_Wl2_Buffer;
583 typedef enum _Ecore_Wl2_Buffer_Type
585 ECORE_WL2_BUFFER_NONE = 0,
586 ECORE_WL2_BUFFER_SHM = 1,
587 ECORE_WL2_BUFFER_DMABUF = 2
588 } Ecore_Wl2_Buffer_Type;
590 // TIZEN_ONLY(20171107): added wl evet structures from ecore_wayland to ecore_wl2
592 typedef struct _Ecore_Wl2_Event_Window_Visibility_Change
596 } Ecore_Wl2_Event_Window_Visibility_Change;
599 typedef struct _Ecore_Wl2_Event_Window_Pre_Visibility_Change
602 Ecore_Wl2_Window_Visibility_Type type;
604 } Ecore_Wl2_Event_Window_Pre_Visibility_Change;
607 typedef struct _Ecore_Wl2_Event_Window_Redraw_Request
610 } Ecore_Wl2_Event_Window_Redraw_Request;
613 typedef struct _Ecore_Wl2_Event_Dnd_Position
615 unsigned int win, source;
620 } Ecore_Wl2_Event_Dnd_Position;
623 typedef struct _Ecore_Wl2_Event_Data_Source_Cancelled
625 unsigned int win, source;
626 } Ecore_Wl2_Event_Data_Source_Cancelled;
629 typedef struct _Ecore_Wl2_Event_Selection_Data_Ready
636 Ecore_Wl2_Selection_Type sel_type;
637 } Ecore_Wl2_Event_Selection_Data_Ready;
640 typedef struct _Ecore_Wl2_Event_Conformant_Change
643 Ecore_Wl2_Conformant_Part_Type part_type;
645 } Ecore_Wl2_Event_Conformant_Change;
647 typedef struct _Ecore_Wl2_Event_Effect
651 } Ecore_Wl2_Event_Effect;
654 typedef struct _Ecore_Wl2_Event_Effect Ecore_Wl2_Event_Effect_Start;
656 typedef struct _Ecore_Wl2_Event_Effect Ecore_Wl2_Event_Effect_End;
659 typedef struct _Ecore_Wl2_Event_Ignore_Output_Transform
661 Ecore_Wl2_Window *win;
663 } Ecore_Wl2_Event_Ignore_Output_Transform;
666 typedef struct _Ecore_Wl2_Event_Indicator_Flick
670 } Ecore_Wl2_Event_Indicator_Flick;
673 typedef struct _Ecore_Wl2_Event_Clipboard_Data_Selected
676 } Ecore_Wl2_Event_Clipboard_Data_Selected;
679 // TIZEN_ONLY(20211120)
681 typedef struct _Ecore_Wl2_Event_Window_Interactive_Move_Done
689 } Ecore_Wl2_Event_Window_Interactive_Move_Done;
692 typedef struct _Ecore_Wl2_Event_Window_Interactive_Resize_Done
700 } Ecore_Wl2_Event_Window_Interactive_Resize_Done;
704 typedef struct _Ecore_Wl2_Keygrab_Info
709 } Ecore_Wl2_Keygrab_Info;
712 typedef struct _Ecore_Wl2_Keyungrab_Info
716 } Ecore_Wl2_Keyungrab_Info;
719 typedef struct _Ecore_Wl2_Surface_Interface
724 void *(*setup)(Ecore_Wl2_Window *win);
725 void (*destroy)(Ecore_Wl2_Surface *surface, void *priv_data);
726 void (*reconfigure)(Ecore_Wl2_Surface *surface, void *priv_data, int w, int h, uint32_t flags, Eina_Bool alpha);
727 void *(*data_get)(Ecore_Wl2_Surface *surface, void *priv_data, int *w, int *h);
728 int (*assign)(Ecore_Wl2_Surface *surface, void *priv_data);
729 void (*post)(Ecore_Wl2_Surface *surface, void *priv_data, Eina_Rectangle *rects, unsigned int count);
730 void (*flush)(Ecore_Wl2_Surface *surface, void *priv_data, Eina_Bool purge);
731 void (*set_serial)(Ecore_Wl2_Surface *surface, void *priv_data, unsigned int serial);
732 } Ecore_Wl2_Surface_Interface;
735 typedef void (*Ecore_Wl2_Bind_Cb)(struct wl_client *client, void *data, uint32_t version, uint32_t id);
737 typedef void (*Ecore_Wl2_Unbind_Cb)(struct wl_resource *resource);
739 EAPI extern int ECORE_WL2_EVENT_DISCONNECT; /** @since 1.18 */
740 EAPI extern int ECORE_WL2_EVENT_CONNECT; /** @since 1.18 */
741 EAPI extern int ECORE_WL2_EVENT_GLOBAL_ADDED; /** @since 1.17 */
742 EAPI extern int ECORE_WL2_EVENT_GLOBAL_REMOVED; /** @since 1.17 */
743 EAPI extern int ECORE_WL2_EVENT_FOCUS_IN; /** @since 1.17 */
744 EAPI extern int ECORE_WL2_EVENT_FOCUS_OUT; /** @since 1.17 */
745 EAPI extern int ECORE_WL2_EVENT_DND_ENTER; /** @internal @since 1.17 */
746 EAPI extern int ECORE_WL2_EVENT_DND_LEAVE; /** @internal @since 1.17 */
747 EAPI extern int ECORE_WL2_EVENT_DND_MOTION; /** @internal @since 1.17 */
748 EAPI extern int ECORE_WL2_EVENT_DND_DROP; /** @internal @since 1.17 */
749 EAPI extern int ECORE_WL2_EVENT_DND_END; /** @internal @since 1.17 */
750 EAPI extern int ECORE_WL2_EVENT_DATA_SOURCE_END; /** @internal @since 1.18 */
751 EAPI extern int ECORE_WL2_EVENT_DATA_SOURCE_DROP; /** @internal @since 1.18 */
752 EAPI extern int ECORE_WL2_EVENT_DATA_SOURCE_ACTION; /** @internal @since 1.18 */
753 EAPI extern int ECORE_WL2_EVENT_DATA_SOURCE_TARGET; /** @internal @since 1.17 */
754 EAPI extern int ECORE_WL2_EVENT_DATA_SOURCE_SEND; /** @internal @since 1.17 */
755 EAPI extern int ECORE_WL2_EVENT_WINDOW_CONFIGURE; /** @since 1.17 */
756 EAPI extern int ECORE_WL2_EVENT_SYNC_DONE; /** @since 1.17 */
757 EAPI extern int ECORE_WL2_EVENT_OFFER_DATA_READY; /** @internal @since 1.19 */
758 EAPI extern int ECORE_WL2_EVENT_SEAT_NAME_CHANGED; /** @since 1.19 */
759 EAPI extern int ECORE_WL2_EVENT_SEAT_CAPABILITIES_CHANGED; /** @since 1.19 */
760 EAPI extern int ECORE_WL2_EVENT_DEVICE_ADDED; /** @since 1.19 */
761 EAPI extern int ECORE_WL2_EVENT_DEVICE_REMOVED; /** @since 1.19 */
762 EAPI extern int ECORE_WL2_EVENT_WINDOW_CONFIGURE_COMPLETE; /** @since 1.19 */
763 EAPI extern int ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED; /** @since 1.20 */
764 EAPI extern int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED; /** @since 1.20 */
765 EAPI extern int ECORE_WL2_EVENT_SEAT_SELECTION; /** @internal @since 1.20 */
766 EAPI extern int ECORE_WL2_EVENT_OUTPUT_TRANSFORM; /** @since 1.20 */
767 EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATE; /** @since 1.20 */
768 EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE; /** @since 1.20 */
769 EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE_DONE; /** @since 1.20 */
770 EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_REQUEST; /** @since 1.20 */
771 EAPI extern int ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_DONE; /** @since 1.20 */
772 EAPI extern int ECORE_WL2_EVENT_AUX_HINT_ALLOWED; /** @since 1.20 */
773 EAPI extern int ECORE_WL2_EVENT_AUX_HINT_SUPPORTED; /** @since 1.20 */
774 EAPI extern int ECORE_WL2_EVENT_AUX_MESSAGE; /** @since 1.20 */
775 EAPI extern int ECORE_WL2_EVENT_WINDOW_SHOW; /** @since 1.20 */
776 EAPI extern int ECORE_WL2_EVENT_WINDOW_HIDE; /** @since 1.20 */
777 EAPI extern int ECORE_WL2_EVENT_WINDOW_ACTIVATE; /** @since 1.20 */
778 EAPI extern int ECORE_WL2_EVENT_WINDOW_DEACTIVATE; /** @since 1.20 */
779 EAPI extern int ECORE_WL2_EVENT_WINDOW_ICONIFY_STATE_CHANGE; /** @since 1.21 */
780 EAPI extern int ECORE_WL2_EVENT_WINDOW_OFFSCREEN; /** @since 1.21 */
781 EAPI extern int ECORE_WL2_EVENT_WINDOW_CREATE; /** @since 1.25 */
782 EAPI extern int ECORE_WL2_EVENT_WINDOW_DESTROY; /** @since 1.25 */
783 // TIZEN_ONLY(20171107): added wl events from ecore_wayland to ecore_wl2
784 EAPI extern int ECORE_WL2_EVENT_WINDOW_VISIBILITY_CHANGE;
785 EAPI extern int ECORE_WL2_EVENT_WINDOW_PRE_VISIBILITY_CHANGE;
786 EAPI extern int ECORE_WL2_EVENT_WINDOW_LOWER;
787 EAPI extern int ECORE_WL2_EVENT_WINDOW_REDRAW_REQUEST;
788 EAPI extern int ECORE_WL2_EVENT_DND_POSITION; /** @internal */
789 EAPI extern int ECORE_WL2_EVENT_DND_OFFER; /** @internal @since 1.8, but NOT exist currenly */
790 EAPI extern int ECORE_WL2_EVENT_DATA_SOURCE_CANCELLED; /** @internal @since 1.7, but NOT exist currenly */
791 EAPI extern int ECORE_WL2_EVENT_SELECTION_DATA_READY; /** @internal @since 1.7, but NOT exist currenly */
792 EAPI extern int ECORE_WL2_EVENT_CONFORMANT_CHANGE;
793 EAPI extern int ECORE_WL2_EVENT_EFFECT_START;
794 EAPI extern int ECORE_WL2_EVENT_EFFECT_END;
795 EAPI extern int ECORE_WL2_EVENT_IGNORE_OUTPUT_TRANSFORM;
796 EAPI extern int ECORE_WL2_EVENT_INDICATOR_FLICK; /** @internal */
797 EAPI extern int ECORE_WL2_EVENT_CLIPBOARD_DATA_SELECTED; /** @internal */
799 // TIZEN_ONLY(20211120)
800 EAPI extern int ECORE_WL2_EVENT_WINDOW_INTERACTIVE_MOVE_DONE;
801 EAPI extern int ECORE_WL2_EVENT_WINDOW_INTERACTIVE_RESIZE_DONE;
808 * Create a new Wayland display
810 * @brief This function is typically used to create a new display for
811 * use with compositors, or to create a new display for use in nested
814 * @param name The display target name to create. If @c NULL, a default
815 * display name will be assigned.
816 * @return The newly created Ecore_Wl2_Display
818 * @ingroup Ecore_Wl2_Display_Group
821 EAPI Ecore_Wl2_Display *ecore_wl2_display_create(const char *name);
826 * Destroy an existing Wayland display
828 * @brief This function is typically used by servers to terminate an
829 * existing Wayland display.
831 * @param display The display to terminate
833 * @ingroup Ecore_Wl2_Display_Group
836 EAPI void ecore_wl2_display_destroy(Ecore_Wl2_Display *display);
841 * Terminate a Wayland display's main loop
843 * @brief This function is typically used by servers to terminate the
844 * Wayland display main loop. This is usually only called when a server
845 * encounters an error.
847 * @param display The Ecore_Wl2_Display to terminate
849 * @ingroup Ecore_Wl2_Display_Group
852 EAPI void ecore_wl2_display_terminate(Ecore_Wl2_Display *display);
857 * Retrieve the existing Wayland display
859 * @param display The Ecore_Wl2_Display for which to retrieve the existing
860 * Wayland display from
862 * @return The wl_display which this Ecore_Wl2_Display is using
864 * @ingroup Ecore_Wl2_Display_Group
867 EAPI struct wl_display *ecore_wl2_display_get(Ecore_Wl2_Display *display);
872 * Retrieve the wl_shm from a given Ecore_Wl2_Display
874 * @param display The Ecore_Wl2_Display for which to retrieve the existing
875 * Wayland shm interface from
877 * @return The wl_shm which this Ecore_Wl2_Display is using
879 * @ingroup Ecore_Wl2_Display_Group
882 EAPI struct wl_shm *ecore_wl2_display_shm_get(Ecore_Wl2_Display *display);
887 * Retrieve the wl_dmabuf from a given Ecore_Wl2_Display
890 * @param display The Ecore_Wl2_Display for which to retrieve the existing
891 * Wayland dmabuf interface from
893 * @return The wl_dmabuf which this Ecore_Wl2_Display is using
895 * @ingroup Ecore_Wl2_Display_Group
897 * @note This is intended for client use only and should be used only
898 * after ecore_wl2_display_connect(). Also, the return type is
899 * void * instead of zpw_linux_dmabuf_v1 * since we don't want
900 * to change our public API every time the version changes in
905 EAPI void *ecore_wl2_display_dmabuf_get(Ecore_Wl2_Display *display);
910 * Return an Eina_Iterator that can be used to iterate through globals
912 * @param display The Ecore_Wl2_Display for which to return a global iterator
914 * @note The caller of this function should free the returned Eina_Iterator
915 * when finished with it.
917 * @ingroup Ecore_Wl2_Display_Group
920 EAPI Eina_Iterator *ecore_wl2_display_globals_get(Ecore_Wl2_Display *display);
925 * Get all the Ecore_Wl2_Input from the display.
927 * @param display The display
929 * @return A Eina_Iterator of Ecore_Wl2_Input or @c NULL on error
931 * @ingroup Ecore_Wl2_Display_Group
934 EAPI Eina_Iterator *ecore_wl2_display_inputs_get(Ecore_Wl2_Display *display);
939 * Find a seat for a given display object using the seat id
941 * @param display The display
942 * @param id The seat id
944 * @return The corresponding Ecore_Wl2_Input object or @c NULL if no match is found
946 * @ingroup Ecore_Wl2_Display_Group
949 EAPI Ecore_Wl2_Input *ecore_wl2_display_input_find(const Ecore_Wl2_Display *display, unsigned int id);
954 * Find a seat for a given display object using the seat id
956 * @param display The display
957 * @param name The seat name
959 * @return The corresponding Ecore_Wl2_Input object or @c NULL if no match is found
961 * @ingroup Ecore_Wl2_Display_Group
964 EAPI Ecore_Wl2_Input *ecore_wl2_display_input_find_by_name(const Ecore_Wl2_Display *display, const char *name);
969 * Retrieves the Wayland Registry used for the current Wayland display.
971 * @param display The display to get the registry of
973 * @return The current wayland registry, or NULL on error
975 * @ingroup Ecore_Wl2_Display_Group
978 EAPI struct wl_registry *ecore_wl2_display_registry_get(Ecore_Wl2_Display *display);
983 * Check if the display has performed a sync
985 * @param display The display
987 * @return True if the display sync has occurred
988 * @see ECORE_WL2_EVENT_SYNC_DONE
990 * @ingroup Ecore_Wl2_Display_Group
993 EAPI Eina_Bool ecore_wl2_display_sync_is_done(const Ecore_Wl2_Display *display);
998 * Get the name of the display object
1000 * @param display The display
1002 * @return The name of the display object
1004 * @ingroup Ecore_Wl2_Display_Group
1007 EAPI const char *ecore_wl2_display_name_get(const Ecore_Wl2_Display *display);
1012 * Finds an Ecore_Wl2_Window based on wl_surface
1014 * @param display The display to search for the window
1015 * @param surface The wl_surface of the window to find
1017 * @return The Ecore_Wl2_Window if found, or NULL if no such window exists
1019 * @ingroup Ecore_Wl2_Display_Group
1022 EAPI Ecore_Wl2_Window *ecore_wl2_display_window_find_by_surface(Ecore_Wl2_Display *display, struct wl_surface *surface);
1027 * Gets the wl_compositor which belongs to this display
1029 * @param display The Ecore_Wl2_Display to get the compositor of
1031 * @return The wl_compositor associated with this display
1033 * @ingroup Ecore_Wl2_Display_Group
1036 EAPI struct wl_compositor *ecore_wl2_display_compositor_get(Ecore_Wl2_Display *display);
1041 * Return the version of the display's compositor object
1043 * @param disp the display to get the compositor object version from
1045 * @return the version of the display's compositor object
1047 * @ingroup Ecore_Wl2_Display_Group
1050 EAPI int ecore_wl2_display_compositor_version_get(Ecore_Wl2_Display *disp);
1055 * Set a callback to be caleld just before the window is closed and freed
1057 * @param window The window to listen to for a xdg toplevel close callback
1058 * @param cb The callback function to call being passed data and window
1059 * @param data The Data pointer to pass as data to the callback
1061 * @ingroup Ecore_Wl2_Window_Group
1064 EAPI void ecore_wl2_window_close_callback_set(Ecore_Wl2_Window *window, void (*cb) (void *data, Ecore_Wl2_Window *win), void *data);
1069 * Set a callback to be called after the window's visibility is changed
1071 * @param window The window to listen to for a tizen visibility cb notify callback
1072 * @param cb The callback function to call being passed data, window and visibility
1073 * @param data The Data pointer to pass as data to the callback
1075 * @ingroup Ecore_Wl2_Window_Group
1078 EAPI void ecore_wl2_window_visibility_callback_set(Ecore_Wl2_Window *window, void (*cb) (void *data, Ecore_Wl2_Window *win, Eina_Bool visibility), void *data);
1083 * Get the wl_surface which belongs to this window
1085 * @param window The Ecore_Wl2_Window to get the surface of
1087 * @return The wl_surface associated with this window.
1089 * @ingroup Ecore_Wl2_Window_Group
1092 EAPI struct wl_surface *ecore_wl2_window_surface_get(Ecore_Wl2_Window *window);
1097 * Get the id of a given Ecore_Wl2_Window
1099 * @param window The window to return the id of
1101 * @return The id of the given window, or -1 on failure
1103 * @ingroup Ecore_Wl2_Window_Group
1106 EAPI int ecore_wl2_window_surface_id_get(Ecore_Wl2_Window *window);
1111 * @see evas_object_size_hint_aspect_set
1112 * @ingroup Ecore_Wl2_Window_Group
1115 EAPI void ecore_wl2_window_aspect_set(Ecore_Wl2_Window *window, int w, int h, unsigned int aspect);
1120 * @see evas_object_size_hint_aspect_get
1121 * @ingroup Ecore_Wl2_Window_Group
1124 EAPI void ecore_wl2_window_aspect_get(Ecore_Wl2_Window *window, int *w, int *h, unsigned int *aspect);
1129 * @brief Begin moving a given Ecore_Wl2_Window
1131 * @param window The Ecore_Wl2_Window which to move
1132 * @param input The seat on which the move is active on
1134 * @ingroup Ecore_Wl2_Window_Group
1137 EAPI void ecore_wl2_window_move(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
1142 * @brief Begin resizing a given window
1144 * @param window The Ecore_Wl2_Window which to resize
1145 * @param input The seat on which the resize is active
1146 * @param location The edge of the window from which the resize should start
1148 * @ingroup Ecore_Wl2_Window_Group
1151 EAPI void ecore_wl2_window_resize(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input, int location);
1153 // TIZEN_ONLY(20171108): tizen window function
1155 EAPI void ecore_wl2_window_parent_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window *parent);
1157 EAPI void ecore_wl2_window_stack_mode_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Stack_Mode mode);
1159 EAPI void ecore_wl2_window_position_set(Ecore_Wl2_Window *window, int x, int y);
1161 EAPI int ecore_wl2_window_active_angle_get(Ecore_Wl2_Window *window);
1164 //TIZEN_ONLY(20210721)
1168 * Set a parent window of Ecore_Wl2_Window
1170 * This makes a relationship between parent and child. And child can choose where it is placed.
1171 * If a @p place_below is true, then the window is always placed under the parent.
1172 * Otherwise, it is placed on the parent.
1174 * @param window The window on which to set the parent
1175 * @param parent The parent window
1176 * @param place_below If @p place_below is EINA_TRUE, the @p window is placed under the @p parent,
1177 * Otherwise, the @p window is placed on the @p parent
1179 * @ingroup Ecore_Wl2_Window_Group
1182 EAPI void ecore_wl2_window_transient_parent_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window *parent, Eina_Bool place_below);
1185 //TIZEN_ONLY(20171216): add ecore_wl2_window_find
1187 EAPI Ecore_Wl2_Window *ecore_wl2_window_find(unsigned int id);
1193 * Set a given window's transparent property
1195 * @param window The window on which to set the transparent property
1196 * @param transparent EINA_TRUE to set window as transparent,
1197 * EINA_FALSE otherwise
1199 * @ingroup Ecore_Wl2_Window_Group
1202 EAPI void ecore_wl2_window_transparent_set(Ecore_Wl2_Window *window, Eina_Bool transparent);
1204 // TIZEN_ONLY(20171108) : Get a window's transparent property
1206 EAPI Eina_Bool ecore_wl2_window_transparent_get(Ecore_Wl2_Window *window);
1212 * Set the opaque region of the Ecore_Wl2_Window
1214 * @param window The window
1215 * @param x The left point of the region.
1216 * @param y The top point of the region.
1217 * @param w The width of the region.
1218 * @param h The height of the region.
1220 * @ingroup Ecore_Wl2_Window_Group
1223 EAPI void ecore_wl2_window_opaque_region_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
1225 // TIZEN_ONLY(20160201) : support to handle input rectangle
1227 EAPI void ecore_wl2_window_input_rect_set(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
1229 EAPI void ecore_wl2_window_input_rect_add(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
1231 EAPI void ecore_wl2_window_input_rect_subtract(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
1237 * Get the opaque region of the Ecore_Wl2_Window
1239 * @param window The window
1240 * @param x The left point of the region.
1241 * @param y The top point of the region.
1242 * @param w The width of the region.
1243 * @param h The height of the region.
1245 * @ingroup Ecore_Wl2_Window_Group
1248 EAPI void ecore_wl2_window_opaque_region_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
1253 * Set the input region of the Ecore_Wl2_Window.
1255 * To set an empty region, pass width and height as 0.
1257 * An empty input region means the entire window surface will accept input.
1259 * @param window The window to set the input region of
1260 * @param x The left point of the region.
1261 * @param y The top point of the region.
1262 * @param w The width of the region.
1263 * @param h The height of the region.
1265 * @ingroup Ecore_Wl2_Window_Group
1268 EAPI void ecore_wl2_window_input_region_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
1273 * Get the input region of the Ecore_Wl2_Window.
1275 * @param window The window to set the input region of
1276 * @param x The left point of the region.
1277 * @param y The top point of the region.
1278 * @param w The width of the region.
1279 * @param h The height of the region.
1281 * @ingroup Ecore_Wl2_Window_Group
1284 EAPI void ecore_wl2_window_input_region_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
1289 * Get if a given window is maximized
1291 * @param window The window to get the maximized state of
1293 * @return EINA_TRUE if window is maximized, EINA_FALSE otherwise
1295 * @ingroup Ecore_Wl2_Window_Group
1298 EAPI Eina_Bool ecore_wl2_window_maximized_get(Ecore_Wl2_Window *window);
1303 * Set the maximized state of a given window
1305 * @param window The window to set the maximized state of
1306 * @param maximized EINA_TRUE to set maximized, EINA_FALSE to unset
1308 * @ingroup Ecore_Wl2_Window_Group
1311 EAPI void ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized);
1313 // TIZEN_ONLY(20221121): support a maximize direction
1317 * Set the maximized state of a given window with a maximize direction
1318 * If the type is ECORE_WL2_MAXIMIZE_DIRECTION_NONE, this means unmaximizing window.
1319 * This is same to call ecore_wl2_window_maximized_set(window, EINA_FALSE).
1320 * If the type is ECORE_WL2_MAXIMIZE_DIRECTION_ALL, this is same to call ecore_wl2_window_maximized_set(window, EINA_TRUE).
1322 * @param window The window to set the maximized state of
1323 * @param direction ECORE_WL2_MAXIMIZE_DIRECTION_NONE to unmaximize, otherwise maximize to specific direction
1325 * @see ecore_wl2_window_maximized_set
1326 * @ingroup Ecore_Wl2_Window_Group
1328 EAPI void ecore_wl2_window_maximized_set_with_direction(Ecore_Wl2_Window *window, Ecore_Wl2_Maximize_Direction direction);
1331 // TIZEN_ONLY(20230320): support a layout window
1334 ecore_wl2_window_layout_set(Ecore_Wl2_Window * window, unsigned int num_cols, unsigned int num_rows, unsigned int column, unsigned int row, unsigned int col_span, unsigned int row_span);
1340 * Get if a given window is fullscreen
1342 * @param window The window to get the fullscreen state of
1344 * @return EINA_TRUE if window is fullscreen, EINA_FALSE otherwise
1346 * @ingroup Ecore_Wl2_Window_Group
1349 EAPI Eina_Bool ecore_wl2_window_fullscreen_get(Ecore_Wl2_Window *window);
1354 * Set the fullscreen state of a given window
1356 * @param window The window to set the fullscreen state of
1357 * @param fullscreen EINA_TRUE to set fullscreen, EINA_FALSE to unset
1359 * @ingroup Ecore_Wl2_Window_Group
1362 EAPI void ecore_wl2_window_fullscreen_set(Ecore_Wl2_Window *window, Eina_Bool fullscreen);
1367 * Get if a given window is rotated
1369 * @param window The window to get the rotation of
1371 * @return The amount of rotation for this window, or -1 on failure
1373 * @ingroup Ecore_Wl2_Window_Group
1376 EAPI int ecore_wl2_window_rotation_get(Ecore_Wl2_Window *window);
1381 * Set the rotation of a given window
1383 * @param window The window to set the rotation of
1384 * @param rotation The amount of rotation
1386 * @ingroup Ecore_Wl2_Window_Group
1389 EAPI void ecore_wl2_window_rotation_set(Ecore_Wl2_Window *window, int rotation);
1394 * Set the class of a given window
1396 * @param window The window to set the class of
1397 * @param clas The class of the window
1399 * @ingroup Ecore_Wl2_Window_Group
1402 EAPI void ecore_wl2_window_class_set(Ecore_Wl2_Window *window, const char *clas);
1407 * Get the class of a given window
1409 * @param window The window to set the class of
1411 * @return A string if found, or NULL otherwise
1413 * @ingroup Ecore_Wl2_Window_Group
1416 EAPI const char *ecore_wl2_window_class_get(Ecore_Wl2_Window *window);
1421 * Get the geometry of a given window
1423 * @brief The window geometry returned here is the window geometry as
1424 * recognized by xdg_surface_set_window_geometry. As such, it represents the
1425 * "visible bounds" of a window from the user's perspective.
1427 * @param window The window to get the geometry of
1428 * @param x The left point of the window geometry
1429 * @param y The top point of the window geometry
1430 * @param w The width of the window geometry
1431 * @param h The height of the window geometry
1433 * @ingroup Ecore_Wl2_Window_Group
1436 EAPI void ecore_wl2_window_geometry_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
1441 * Set the geometry of a given window
1443 * @brief The window geometry referenced here is the window geometry as
1444 * recognized by xdg_surface_set_window_geometry. As such, it represents the
1445 * "visible bounds" of a window from the user's perspective.
1447 * @param window The window to set the geometry of
1448 * @param x The left point of the window geometry
1449 * @param y The top point of the window geometry
1450 * @param w The width of the window geometry
1451 * @param h The height of the window geometry
1453 * @ingroup Ecore_Wl2_Window_Group
1456 EAPI void ecore_wl2_window_geometry_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
1458 //TIZEN_ONLY(20220325): added min / max size set to window
1462 * Set the minimum size of a given window
1464 * @param window The window to set the minimum size of
1465 * @param w The minimum width of the window size
1466 * @param h The minimum height of the window size
1468 * @ingroup Ecore_Wl2_Window_Group
1471 EAPI void ecore_wl2_window_minimum_size_set(Ecore_Wl2_Window *window, int w, int h);
1476 * Set the maximum size of a given window
1478 * @param window The window to set the maximum size of
1479 * @param w The maximum width of the window size
1480 * @param h The maximum height of the window size
1482 * @ingroup Ecore_Wl2_Window_Group
1485 EAPI void ecore_wl2_window_maximum_size_set(Ecore_Wl2_Window *window, int w, int h);
1491 * Get the iconified state of a given window
1493 * @param window The window to get the iconified state of
1495 * @return EINA_TRUE if window is iconified, EINA_FALSE otherwise
1497 * @ingroup Ecore_Wl2_Window_Group
1500 EAPI Eina_Bool ecore_wl2_window_iconified_get(Ecore_Wl2_Window *window);
1507 * @param win The window to iconifiy
1508 * @param iconified The new iconified state to set
1510 * @ingroup Ecore_Wl2_Window_Group
1513 EAPI void ecore_wl2_window_iconified_set(Ecore_Wl2_Window *window, Eina_Bool iconified);
1515 // TIZEN_ONLY(20151231) : handling iconic state on tizen
1517 EAPI void ecore_wl2_window_iconify_state_update(Ecore_Wl2_Window *window, Eina_Bool iconified, Eina_Bool send_event);
1523 * Set the type of a given window
1525 * @param window The window to set the type of
1526 * @param type The Ecore_Wl2_Window_Type to set on the window
1528 * @ingroup Ecore_Wl2_Window_Group
1531 EAPI void ecore_wl2_window_type_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Type type);
1536 * Get the type of a given window
1538 * @see Ecore_Wl2_Window_Type
1540 * @ingroup Ecore_Wl2_Window_Group
1543 EAPI Ecore_Wl2_Window_Type ecore_wl2_window_type_get(Ecore_Wl2_Window *window);
1548 * Find the output that a given window is on
1550 * @param window The window to find the output for
1552 * @return An Ecore_Wl2_Output if found, or NULL otherwise
1554 * @ingroup Ecore_Wl2_Window_Group
1557 EAPI Ecore_Wl2_Output *ecore_wl2_window_output_find(Ecore_Wl2_Window *window);
1562 * Set if window rotation is supported by the window manager
1567 * @ingroup Ecore_Wl2_Window_Group
1570 EAPI void ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, Eina_Bool enabled);
1575 * Get if window rotation is supported by the window manager
1579 * @return EINA_TRUE if supported, EINA_FALSE otherwise
1581 * @ingroup Ecore_Wl2_Window_Group
1584 EAPI Eina_Bool ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window *window);
1589 * Set if an application has set window rotation
1594 * @ingroup Ecore_Wl2_Window_Group
1597 EAPI void ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, Eina_Bool set);
1602 * Get if an application has set window rotation
1606 * @return EINA_TRUE if set, EINA_FALSE otherwise
1608 * @ingroup Ecore_Wl2_Window_Group
1611 EAPI Eina_Bool ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window);
1616 * Set preferred rotation on a given window
1618 * @param window The window to set preferred rotation on
1619 * @param rot The value of the preferred rotation to set
1621 * @ingroup Ecore_Wl2_Window_Group
1624 EAPI void ecore_wl2_window_preferred_rotation_set(Ecore_Wl2_Window *window, int rot);
1629 * Get preferred rotation for a given window
1631 * @param window The window to get preferred rotation from
1633 * @return Given windows preferred rotation
1635 * @ingroup Ecore_Wl2_Window
1638 EAPI int ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window *window);
1643 * Set a windows available rotations
1649 * @ingroup Ecore_Wl2_Window_Group
1652 EAPI void ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, const int *rots, unsigned int count);
1657 * Get a windows available rotations
1663 * @return EINA_TRUE on success, EINA_FALSE otherwise
1665 * @ingroup Ecore_Wl2_Window_Group
1668 EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, unsigned int *count);
1670 EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot, int w, int h, Eina_Bool resize);
1672 EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, int rot);
1674 EAPI void ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window *window, int rot);
1676 EAPI void ecore_wl2_window_rotation_change_done_send(Ecore_Wl2_Window *window, int rot, int w, int h);
1679 EAPI void ecore_wl2_window_rotation_geometry_set(Ecore_Wl2_Window *win, int rot, int x, int y, int w, int h);
1681 EAPI void ecore_wl2_window_rotation_changed_callback_set(Ecore_Wl2_Window *win, void *data, void (*func)(Ecore_Wl2_Window *win, int rot, Eina_Bool resize, int w, int h, void *data));
1684 // TIZEN_ONLY(20210330): support aux_hint generate
1688 * Generate a auxiliary hint to a given window
1689 * It generates auxiliary hint ID in function and return the ID.
1690 * If there is already exist auxiliary hint that have the same name with "hint" parameter,
1691 * then change value of the hint and return exist hint's ID.
1693 * @param win The window to add auxiliary hint
1694 * @param hint The name of hint to add
1695 * @param val The value of hint to add
1697 * @return Hint ID on success, -1 on failure
1699 * @ingroup Ecore_Wl2_Window_Group
1701 EAPI int ecore_wl2_window_aux_hint_generate(Ecore_Wl2_Window *win, const char *hint, const char *val);
1706 * Get the hint ID of a given window
1708 * @param win The window to get auxiliary hint ID
1709 * @param hint The name of hint to get ID
1711 * @return Hint ID on success, -1 on failure
1713 * @ingroup Ecore_Wl2_Window_Group
1715 EAPI int ecore_wl2_window_aux_hint_id_get(Ecore_Wl2_Window *win, const char *hint);
1720 * Get the hint value of a given window
1722 * @param win The window to get auxiliary hint value
1723 * @param id The ID of hint to get hint value
1725 * @return Hint value on success, NULL on failure
1727 * @ingroup Ecore_Wl2_Window_Group
1729 EAPI const char *ecore_wl2_window_aux_hint_value_get(Ecore_Wl2_Window *win, int id);
1730 // END OF TIZEN_ONLY
1735 * Get list of supported auxiliary window hints
1739 * @return An Eina_List of supported auxiliary hints, or NULL otherwise
1741 * @ingroup Ecore_Wl2_Window_Group
1744 EAPI Eina_List *ecore_wl2_window_aux_hints_supported_get(Ecore_Wl2_Window *window);
1749 * Add a supported auxiliary hint to a given window
1756 * @ingroup Ecore_Wl2_Window_Group
1759 EAPI void ecore_wl2_window_aux_hint_add(Ecore_Wl2_Window *window, int id, const char *hint, const char *val);
1764 * Change an auxiliary hint on a given window
1770 * @ingroup Ecore_Wl2_Window_Group
1773 EAPI void ecore_wl2_window_aux_hint_change(Ecore_Wl2_Window *window, int id, const char *val);
1778 * Delete an auxiliary hint on a given window
1783 * @ingroup Ecore_Wl2_Window_Group
1786 EAPI void ecore_wl2_window_aux_hint_del(Ecore_Wl2_Window *window, int id);
1791 * @brief Get the activated state of a window
1793 * @param window The window to get activated state from
1795 * @return @c EINA_TRUE if activated
1797 * @ingroup Ecore_Wl2_Window_Group
1800 EAPI Eina_Bool ecore_wl2_window_activated_get(const Ecore_Wl2_Window *window);
1805 * @brief Set the seat for a popup window to be used with grab
1807 * @param window The window
1808 * @param input The seat
1810 * Use this function for desktop shell requests involving popup grabs which require
1811 * a seat for the grab.
1813 * @ingroup Ecore_Wl2_Window_Group
1816 EAPI void ecore_wl2_window_popup_input_set(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
1821 * @brief Get the seat for a popup window to be used with grab
1823 * @param window The window
1825 * @return Returns Ecore_Wl2_Input if the window has an input.
1827 * @ingroup Ecore_Wl2_Window_Group
1830 EAPI Ecore_Wl2_Input *ecore_wl2_window_popup_input_get(Ecore_Wl2_Window *window);
1835 * Check if a window has a shell surface - without one it can't be visible.
1837 * @param win The window to check
1839 * @return Returns true if the window has an associated shell surface.
1841 * @ingroup Ecore_Wl2_Window_Group
1844 EAPI Eina_Bool ecore_wl2_window_shell_surface_exists(Ecore_Wl2_Window *win);
1846 // TIZEN_ONLY(171108) : get shell surface of a given window
1848 EAPI struct zxdg_surface_v6 *ecore_wl2_window_shell_surface_get(Ecore_Wl2_Window *window);
1854 * Set the role of a given window
1859 * @ingroup Ecore_Wl2_Window_Group
1862 EAPI void ecore_wl2_window_role_set(Ecore_Wl2_Window *window, const char *role);
1867 * Get the role of a given window
1869 * @param window The window to set the class role
1871 * @return A string if found, or NULL otherwise
1873 * @ingroup Ecore_Wl2_Window_Group
1876 EAPI const char *ecore_wl2_window_role_get(Ecore_Wl2_Window *window);
1881 * Set if a given window is in floating mode
1883 * @param window The window to set floating mode on
1884 * @param floating EINA_TRUE if this window should be in floating mode, EINA_FALSE otherwise
1886 * @ingroup Ecore_Wl2_Window_Group
1889 EAPI void ecore_wl2_window_floating_mode_set(Ecore_Wl2_Window *window, Eina_Bool floating);
1894 * Get if a given window is in floating mode
1896 * @param window The window to get floating mode
1898 * @return EINA_TRUE if floating, EINA_FALSE otherwise
1900 * @ingroup Ecore_Wl2_Window_Group
1903 EAPI Eina_Bool ecore_wl2_window_floating_mode_get(Ecore_Wl2_Window *window);
1908 * Finds a window by surface
1910 * @param surface The surface to find the window of
1912 * @ingroup Ecore_Wl2_Window_Group
1915 EAPI Ecore_Wl2_Window *ecore_wl2_window_surface_find(struct wl_surface *surface);
1920 * Check if a wayland window's surface is in the pending state.
1922 * A surface is pending if it's been commit but we haven't received a
1923 * frame callback for it yet. This mean's we're not ready to draw yet.
1925 * @param window The window whose surface we want to check
1927 * @return whether the window's surface is pending or not.
1931 EAPI Eina_Bool ecore_wl2_window_pending_get(Ecore_Wl2_Window *window);
1936 * Get if a given window is resizing
1938 * @param window The window to check for resizing
1940 * @return EINA_TRUE if resizing, EINA_FALSE otherwise
1942 * @ingroup Ecore_Wl2_Window_Group
1945 EAPI Eina_Bool ecore_wl2_window_resizing_get(Ecore_Wl2_Window *window);
1950 * Latch window state at the start of an update
1952 * When async render takes place we continue to dispatch wayland
1953 * events from the main loop. We need to defer any changes to
1954 * window state from those events until the update is complete.
1956 * Events deferred during an update will automatically fire
1957 * immediately after the caller calls ecore_wl2_window_commit.
1959 * @param window The window whose state we want to latch
1963 EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window);
1965 // TIZEN_ONLY(20171207): add functions to set client's custom cursors
1967 EAPI void ecore_wl2_window_pointer_set(Ecore_Wl2_Window *win, struct wl_surface *surface, int hot_x, int hot_y);
1969 EAPI void ecore_wl2_window_cursor_from_name_set(Ecore_Wl2_Window *win, const char *cursor_name);
1971 EAPI void ecore_wl2_window_cursor_default_restore(Ecore_Wl2_Window *win);
1973 // TIZEN_ONLY(20150703) : support conformant
1975 EAPI void ecore_wl2_window_conformant_set(Ecore_Wl2_Window *win, unsigned int is_conformant);
1977 EAPI Eina_Bool ecore_wl2_window_conformant_get(Ecore_Wl2_Window *win);
1980 // TIZEN_ONLY(20171108) : add functions for indicator
1982 EAPI void ecore_wl2_window_indicator_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
1984 EAPI Eina_Bool ecore_wl2_window_indicator_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
1986 EAPI void ecore_wl2_window_indicator_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_State state);
1988 EAPI Ecore_Wl2_Indicator_State ecore_wl2_window_indicator_state_get(Ecore_Wl2_Window *win);
1990 EAPI void ecore_wl2_window_indicator_opacity_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Opacity_Mode mode);
1992 EAPI Ecore_Wl2_Indicator_Opacity_Mode ecore_wl2_window_indicator_opacity_get(Ecore_Wl2_Window *win);
1994 EAPI void ecore_wl2_indicator_visible_type_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Visible_Type type);
1996 EAPI Ecore_Wl2_Indicator_Visible_Type ecore_wl2_indicator_visible_type_get(Ecore_Wl2_Window *win);
1999 // TIZEN_ONLY(20171108) : add functions for clipboard
2001 EAPI void ecore_wl2_window_clipboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
2003 EAPI Eina_Bool ecore_wl2_window_clipboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
2005 EAPI void ecore_wl2_window_clipboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Clipboard_State state);
2007 EAPI Ecore_Wl2_Clipboard_State ecore_wl2_window_clipboard_state_get(Ecore_Wl2_Window *win);
2009 EAPI void ecore_wl2_clipboard_show(Ecore_Wl2_Window *win);
2011 EAPI void ecore_wl2_clipboard_hide(Ecore_Wl2_Window *win);
2013 EAPI Eina_Bool ecore_wl2_clipboard_data_only_set(Eina_Bool data_only);
2016 // TIZEN_ONLY(20171108) : add functions for keyboard
2018 EAPI void ecore_wl2_window_keyboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
2020 EAPI Eina_Bool ecore_wl2_window_keyboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
2022 EAPI void ecore_wl2_window_keyboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Virtual_Keyboard_State state);
2024 EAPI Ecore_Wl2_Virtual_Keyboard_State ecore_wl2_window_keyboard_state_get(Ecore_Wl2_Window *win);
2026 // TIZEN_ONLY(20171107): add ecore_wl2_window_input_get() EAPI
2028 EAPI Ecore_Wl2_Input *ecore_wl2_window_input_get(Ecore_Wl2_Window *win);
2030 // TIZEN_ONLY(20200326): add ecore_wl2_window_pointer/keyboard_get() EAPI
2032 EAPI Ecore_Wl2_Input *ecore_wl2_window_pointer_get(Ecore_Wl2_Window *win);
2034 EAPI Ecore_Wl2_Input *ecore_wl2_window_keyboard_get(Ecore_Wl2_Window *win);
2036 // TIZEN_ONLY(20171114): support a pointer warp
2038 EAPI Eina_Bool ecore_wl2_window_pointer_warp(Ecore_Wl2_Window *win, int x, int y);
2040 //TIZEN_ONLY(20171115): support output transform
2042 EAPI Eina_Bool ecore_wl2_window_ignore_output_transform_get(Ecore_Wl2_Window *win);
2044 //TIZEN_ONLY(20180810): support client demand move resize
2046 EAPI void ecore_wl2_window_sync_geometry_set(Ecore_Wl2_Window *window, uint32_t serial, int x, int y, int w, int h);
2052 * Get the wl_seat that an input is using
2054 * @param input The Ecore_Wl2_Input to get the seat of
2056 * @return The wl_seat of this input, or NULL otherwise
2058 * @ingroup Ecore_Wl2_Input_Group
2061 EAPI struct wl_seat *ecore_wl2_input_seat_get(Ecore_Wl2_Input *input);
2066 * Get the seat capabilities for a given input.
2068 * @param input The input
2070 * @ingroup Ecore_Wl2_Input_Group
2073 EAPI Ecore_Wl2_Seat_Capabilities ecore_wl2_input_seat_capabilities_get(Ecore_Wl2_Input *input);
2078 * Get the wayland's seat id from an input.
2080 * @param input The input
2082 * @return The seat id
2084 * @ingroup Ecore_Wl2_Input_Group
2087 EAPI unsigned int ecore_wl2_input_seat_id_get(Ecore_Wl2_Input *input) EINA_WARN_UNUSED_RESULT;
2092 * Get the display object of an input
2094 * @param input The input
2096 * @return The display
2098 * @ingroup Ecore_Wl2_Input_Group
2101 EAPI Ecore_Wl2_Display *ecore_wl2_input_display_get(const Ecore_Wl2_Input *input);
2106 * Get the xkb_keymap object of an input
2108 * @param input The input
2110 * @return The xkb_keymap object
2112 * @ingroup Ecore_Wl2_Input_Group
2115 EAPI struct xkb_keymap *ecore_wl2_input_keymap_get(const Ecore_Wl2_Input *input);
2120 * Get the name of an input
2122 * @param input The input
2126 * @ingroup Ecore_Wl2_Input_Group
2129 EAPI Eina_Stringshare *ecore_wl2_input_name_get(Ecore_Wl2_Input *input);
2134 * Get the keyboard repeat rate and delay of an input
2136 * @param input The input
2137 * @param rate Pointer to store the repeat rate (in seconds)
2138 * @param rate Pointer to store the repeat delay (in seconds)
2140 * @return True if repeat is enabled
2142 * @ingroup Ecore_Wl2_Input_Group
2145 EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay);
2150 * Set the keyboard repeat rate and delay of an input
2151 * @param input The input
2152 * @param rate Pointer to store the repeat rate (in seconds)
2153 * @param rate Pointer to store the repeat delay (in seconds)
2154 * @return True if repeat is enabled
2155 * @ingroup Ecore_Wl2_Input_Group
2158 EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_set(Ecore_Wl2_Input *input, double rate, double delay);
2163 * Get the keyboard repeat rate and delay of horizontal way
2165 * @param input The input
2166 * @param rate Pointer to store the repeat rate (in seconds)
2167 * @param rate Pointer to store the repeat delay (in seconds)
2169 * @return True if repeat is enabled
2171 * @ingroup Ecore_Wl2_Input_Group
2173 EAPI Eina_Bool ecore_wl2_input_keyboard_horizontal_way_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay);
2178 * Set the keyboard repeat rate and delay of horizontal way
2179 * @param input The input
2180 * @param rate Pointer to store the repeat rate (in seconds)
2181 * @param rate Pointer to store the repeat delay (in seconds)
2183 * @return True if repeat is enabled
2185 * @ingroup Ecore_Wl2_Input_Group
2187 EAPI Eina_Bool ecore_wl2_input_keyboard_horizontal_way_repeat_set(Ecore_Wl2_Input *input, double rate, double delay);
2192 * Get the keyboard repeat rate and delay of vertical way
2194 * @param input The input
2195 * @param rate Pointer to store the repeat rate (in seconds)
2196 * @param rate Pointer to store the repeat delay (in seconds)
2198 * @return True if repeat is enabled
2200 * @ingroup Ecore_Wl2_Input_Group
2202 EAPI Eina_Bool ecore_wl2_input_keyboard_vertical_way_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay);
2207 * Set the keyboard repeat rate and delay of vertical way
2208 * @param input The input
2209 * @param rate Pointer to store the repeat rate (in seconds)
2210 * @param rate Pointer to store the repeat delay (in seconds)
2212 * @return True if repeat is enabled
2214 * @ingroup Ecore_Wl2_Input_Group
2216 EAPI Eina_Bool ecore_wl2_input_keyboard_vertical_way_repeat_set(Ecore_Wl2_Input *input, double rate, double delay);
2221 * Set a given wl_surface to use as the pointer on a seat
2223 * @param input The seat to set this surface as the pointer on
2224 * @param surface The surface to use as the pointer
2225 * @param hot_x The x coordinate to use as the cursor hot spot
2226 * @param hot_y The y coordinate to use as the cursor hot spot
2228 * @ingroup Ecore_Wl2_Input_Group
2231 EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
2236 * Set a specific cursor on a given input
2238 * @brief This function will try to find a matching cursor inside the existing
2239 * cursor theme and set the pointer for the specified seat to be
2240 * the specified cursor
2242 * @param input The seat to set the cursor on
2243 * @param cursor The name of the cursor to try and set
2245 * @ingroup Ecore_Wl2_Input_Group
2248 EAPI void ecore_wl2_input_cursor_from_name_set(Ecore_Wl2_Input *input, const char *cursor);
2250 // TIZEN_ONLY(20171207): add functions to set client's custom cursors
2252 EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
2254 EAPI struct wl_cursor *ecore_wl2_input_cursor_get(Ecore_Wl2_Input *input, const char *cursor_name);
2256 EAPI void ecore_wl2_input_cursor_size_set(Ecore_Wl2_Input *input, const int size);
2258 EAPI void ecore_wl2_input_cursor_theme_name_set(Ecore_Wl2_Input *input, const char *cursor_theme_name);
2260 EAPI void ecore_wl2_input_cursor_default_restore(Ecore_Wl2_Input *input);
2264 * @defgroup Ecore_Wl2_Dnd_Group Wayland Library Drag-n-Drop Functions
2265 * @ingroup Ecore_Wl2_Group
2267 * Functions that deal with creating, destroying, or interacting with
2268 * Wayland Drag-n-Drop
2274 * Set the types which are supported by a possible drag and drop operation.
2275 * This call initializes a data source and offeres the given mimetypes
2277 * @param input the input where to add on the data source
2278 * @param types a null-terminated array of mimetypes
2280 * @ingroup Ecore_Wl2_Dnd_Group
2283 EAPI void ecore_wl2_dnd_drag_types_set(Ecore_Wl2_Input *input, const char **types);
2288 * Start a drag on the given input
2290 * @param input the input to use
2291 * @param window the window which is the origin of the drag operation
2292 * @param drag_window the window which is used as window of the visible hint.
2294 * @return The serial for the start_drag request
2296 * @ingroup Ecore_Wl2_Dnd_Group
2299 EAPI uint32_t ecore_wl2_dnd_drag_start(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, Ecore_Wl2_Window *drag_window);
2304 * Call wl_data_source.set_actions on an existing source
2306 * @param input the input to use
2308 * @see ecore_wl2_dnd_drag_start for a more useful function.
2310 * @ingroup Ecore_Wl2_Dnd_Group
2313 EAPI void ecore_wl2_dnd_set_actions(Ecore_Wl2_Input *input);
2318 * End a drag started by a call to ecore_wl2_dnd_drag_start
2320 * @param input the input object on which the drag was started
2322 * @ingroup Ecore_Wl2_Dnd_Group
2325 EAPI void ecore_wl2_dnd_drag_end(Ecore_Wl2_Input *input);
2330 * Get the offer which is currently resposible for the clipboard
2332 * @param input the input object to use
2334 * @ingroup Ecore_Wl2_Dnd_Group
2337 EAPI Ecore_Wl2_Offer* ecore_wl2_dnd_selection_get(Ecore_Wl2_Input *input);
2342 * Set the types which are available from this client
2343 * Later the event ECORE_WL2_EVENT_DATA_SOURCE_SEND is emitted,
2344 * where the caller of this api must write the data (encoded in the given mimetype) to the fd
2346 * @param input the input to provice this types on
2347 * @param types a null-terminated array of mimetypes supported by the client
2349 * @return serial of request on success, 0 on failure
2351 * @ingroup Ecore_Wl2_Dnd_Group
2354 EAPI uint32_t ecore_wl2_dnd_selection_set(Ecore_Wl2_Input *input, const char **types);
2359 * Clear the selection currently setted on this input.
2361 * @param input the input to clear
2363 * @return serial of request on success, 0 on failure
2365 * @ingroup Ecore_Wl2_Dnd_Group
2368 EAPI uint32_t ecore_wl2_dnd_selection_clear(Ecore_Wl2_Input *input);
2370 // TIZEN_ONLY(20211018): added ecore_wl2_offer functions to ecore_wl2
2374 * Get the actions available from the data source
2376 * @param offer Offer object to use
2378 * @return or´ed values from Ecore_Wl2_Drag_Action which are describing the available actions
2380 * @ingroup Ecore_Wl2_Dnd_Group
2383 EAPI Ecore_Wl2_Drag_Action ecore_wl2_offer_actions_get(Ecore_Wl2_Offer *offer);
2388 * Set the actions which are supported by you
2390 * @param offer Offer object to use
2391 * @param actions A or´ed value of mutliple Ecore_Wl2_Drag_Action values
2392 * @param action the preferred action out of the actions
2394 * @ingroup Ecore_Wl2_Dnd_Group
2397 EAPI void ecore_wl2_offer_actions_set(Ecore_Wl2_Offer *offer, Ecore_Wl2_Drag_Action actions, Ecore_Wl2_Drag_Action action);
2402 * Get action which is set by either the data source or in the last call of actions_set
2404 * @param offer Offer object to use
2406 * @return the preferred action
2408 * @ingroup Ecore_Wl2_Dnd_Group
2411 EAPI Ecore_Wl2_Drag_Action ecore_wl2_offer_action_get(Ecore_Wl2_Offer *offer);
2416 * Get the mime types which are given by the source
2418 * @param offer the offer to query
2420 * @return a eina array of strdup´ed strings, this array must NOT be changed or freed
2422 * @ingroup Ecore_Wl2_Dnd_Group
2425 EAPI Eina_Array* ecore_wl2_offer_mimes_get(Ecore_Wl2_Offer *offer);
2430 * Set mimetypes you are accepting under this offer
2432 * @param offer the offer to use
2434 * @ingroup Ecore_Wl2_Dnd_Group
2437 EAPI void ecore_wl2_offer_mimes_set(Ecore_Wl2_Offer *offer, Eina_Array *mimes);
2442 * Accept a single mime type for an offer
2444 * @param offer the offer to use
2445 * @param mime_type the mime type
2447 * @ingroup Ecore_Wl2_Dnd_Group
2450 EAPI void ecore_wl2_offer_accept(Ecore_Wl2_Offer *offer, const char *mime_type);
2455 * Request the data from this offer.
2456 * The event ECORE_WL2_EVENT_OFFER_DATA_READY is called when the data is available.
2457 * There offer will be not destroyed as long as requested data is not emitted by the event.
2459 * @param offer the offer to use
2460 * @param mime the mimetype to receive
2462 * @ingroup Ecore_Wl2_Dnd_Group
2465 EAPI void ecore_wl2_offer_receive(Ecore_Wl2_Offer *offer, char *mime);
2470 * Request the data from this offer on an externally managed fd.
2471 * The event ECORE_WL2_EVENT_OFFER_DATA_READY is called when the data is available.
2472 * There offer will be not destroyed as long as requested data is not emitted by the event.
2474 * @param offer the offer to use
2475 * @param mime the mimetype to receive
2476 * @param fd the fd to pass for receiving
2478 * @ingroup Ecore_Wl2_Dnd_Group
2481 EAPI void ecore_wl2_offer_proxy_receive(Ecore_Wl2_Offer *offer, const char *mime, int fd);
2486 * End the use of a proxy received offer. This may invalidate the offer object
2488 * @param offer the offer
2490 * @ingroup Ecore_Wl2_Dnd_Group
2493 EAPI void ecore_wl2_offer_proxy_receive_end(Ecore_Wl2_Offer *offer);
2498 * Check if the given offer supports the given mimetype
2500 * @param offer the offer to use
2501 * @param mime the mimetype to check
2503 * @return Returns true if the mimetype is supported by this offer, false if not
2505 * @ingroup Ecore_Wl2_Dnd_Group
2508 EAPI Eina_Bool ecore_wl2_offer_supports_mime(Ecore_Wl2_Offer *offer, const char *mime);
2513 * Mark this offer as finished
2514 * This will call the dnd_finished event on the source of the sender.
2516 * @param offer the offer to use
2518 * @ingroup Ecore_Wl2_Dnd_Group
2521 EAPI void ecore_wl2_offer_finish(Ecore_Wl2_Offer *offer);
2525 * @defgroup Ecore_Wl2_Output_Group Wayland Library Output Functions
2526 * @ingroup Ecore_Wl2_Group
2528 * Functions that deal with creating, destroying, or interacting with
2535 * Return the DPI of a given output
2537 * This is a simplistic call to get DPI. It does not account for differing
2538 * DPI in the x and y axes nor does it account for multihead or xinerama and
2539 * xrandr where different parts of the screen may have different DPI etc.
2541 * @param output The output to get the DPI of
2543 * @return the general screen DPI (dots/pixels per inch).
2545 * @ingroup Ecore_Wl2_Output_Group
2548 EAPI int ecore_wl2_output_dpi_get(Ecore_Wl2_Output *output);
2553 * Get the current transform of a given output
2555 * @param output The output to get the transform of
2557 * @return The output's current transform value
2559 * @ingroup Ecore_Wl2_Output_Group
2562 EAPI int ecore_wl2_output_transform_get(Ecore_Wl2_Output *output);
2567 * Disable session recovery for any further connections. Must be called
2568 * before connecting. This is irreversible and not intended for general
2573 EAPI void ecore_wl2_session_recovery_disable(void);
2575 /* TODO: doxygen if we are keeping any of the below functions public */
2577 EAPI Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
2579 // TIZEN_ONLY(20171107): support a tizen_keyrouter interface
2580 EAPI void ecore_wl2_display_sync(Ecore_Wl2_Display *display);
2581 EAPI Eina_Bool ecore_wl2_window_keygrab_set(Ecore_Wl2_Window *win, const char *key, int mod EINA_UNUSED, int not_mod EINA_UNUSED, int priority EINA_UNUSED, Ecore_Wl2_Window_Keygrab_Mode grab_mode);
2582 EAPI Eina_Bool ecore_wl2_window_keygrab_unset(Ecore_Wl2_Window *win, const char *key, int mod EINA_UNUSED, int any_mod EINA_UNUSED);
2584 EAPI Eina_List *ecore_wl2_window_keygrab_list_set(Ecore_Wl2_Window *win, Eina_List *infos);
2585 EAPI Eina_List *ecore_wl2_window_keygrab_list_unset(Ecore_Wl2_Window *win, Eina_List *infos);
2587 // TIZEN_ONLY(20171107): add ecore_wl2_window_input_get() EAPI
2588 EAPI Ecore_Wl2_Input *ecore_wl2_window_input_get(Ecore_Wl2_Window *win);
2590 // TIZEN_ONLY(20200326): add ecore_wl2_window_pointer/keyboard_get() EAPI
2592 EAPI Ecore_Wl2_Input *ecore_wl2_window_pointer_get(Ecore_Wl2_Window *win);
2594 EAPI Ecore_Wl2_Input *ecore_wl2_window_keyboard_get(Ecore_Wl2_Window *win);
2596 // TIZEN_ONLY(20171114): support a pointer warp
2597 EAPI Eina_Bool ecore_wl2_window_pointer_warp(Ecore_Wl2_Window *win, int x, int y);
2599 // TIZEN_ONLY(20200601): support sync between ui and video
2601 //TIZEN_ONLY(20171108): add a new API to ecore_wl2_sync
2603 EAPI void ecore_wl2_sync(void);
2606 //TIZEN_ONLY(20220322): add resource id to window attribute
2608 EAPI unsigned int ecore_wl2_window_resource_id_get(Ecore_Wl2_Window *window);
2611 // TIZEN_ONLY(20221208): support default cursor configuration
2613 EAPI void ecore_wl2_cursor_config_name_set(const char *name);
2616 //TIZEN_ONLY(20221228): add resize request set for ignoring configure event
2618 EAPI void ecore_wl2_window_resize_request_set(Ecore_Wl2_Window *window, int w, int h);
2620 //TIZEN_ONLY(20230220): unset pending resize request
2622 EAPI void ecore_wl2_window_resize_request_unset(Ecore_Wl2_Window *window);
2625 //TIZEN_ONLY(20230306): support pin mode
2627 EAPI void ecore_wl2_window_pin_mode_set(Ecore_Wl2_Window *window, Eina_Bool pinned);
2629 EAPI Eina_Bool ecore_wl2_window_pin_mode_get(Ecore_Wl2_Window *window);
2632 // TIZEN_ONLY(20230801) : support zwp pointer constraints protocol
2633 EAPI Eina_Bool ecore_wl2_window_pointer_constraints_lock_pointer(Ecore_Wl2_Window *win);
2634 EAPI Eina_Bool ecore_wl2_window_pointer_constraints_unlock_pointer(Ecore_Wl2_Window *win);
2635 EAPI void ecore_wl2_window_locked_pointer_region_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
2636 EAPI void ecore_wl2_window_locked_pointer_cursor_position_hint_set(Ecore_Wl2_Window *win, int x, int y);
2638 // TIZEN_ONLY(20230821) : add cursor_visible set API
2639 EAPI void ecore_wl2_window_cursor_visible_set(Ecore_Wl2_Window *win, Eina_Bool visible);
2642 // TIZEN_ONLY(20230823) : add keyboard_grab/ungrab API
2643 EAPI Eina_Bool ecore_wl2_window_keyboard_grab(Ecore_Wl2_Window *win, unsigned int subtype);
2644 EAPI Eina_Bool ecore_wl2_window_keyboard_ungrab(Ecore_Wl2_Window *win);