ecore_wl2: add ecore_wl2_window_layout_set function
[platform/upstream/efl.git] / src / lib / ecore_wl2 / Ecore_Wl2.h
1 #ifndef _ECORE_WL2_H_
2 # define _ECORE_WL2_H_
3
4 # include <Eina.h>
5 # include <Ecore.h>
6 # include <wayland-client.h>
7 # include <wayland-cursor.h>
8 # include <xkbcommon/xkbcommon.h>
9 # include "Ecore_Wayland2.h"
10
11 # define WL_HIDE_DEPRECATED
12 # include <wayland-server.h>
13
14 # ifdef EAPI
15 #  undef EAPI
16 # endif
17
18 # ifdef __GNUC__
19 #  if __GNUC__ >= 4
20 #   define EAPI __attribute__ ((visibility("default")))
21 #  else
22 #   define EAPI
23 #  endif
24 # else
25 #  define EAPI
26 # endif
27
28 # ifdef __cplusplus
29 extern "C" {
30 # endif
31
32 #define ECORE_WL2_SURFACE_INTERFACE_VERSION 1
33
34 /** @internal */
35 typedef struct _Ecore_Wl2_Output Ecore_Wl2_Output;
36 /** @internal */
37 typedef struct _Ecore_Wl2_Seat Ecore_Wl2_Seat;
38 /** @internal */
39 typedef struct _Ecore_Wl2_Pointer Ecore_Wl2_Pointer;
40 /** @internal */
41 typedef struct _Ecore_Wl2_Keyboard Ecore_Wl2_Keyboard;
42 /** @internal */
43 typedef struct _Ecore_Wl2_Touch Ecore_Wl2_Touch;
44 /** @internal */
45 typedef struct _Ecore_Wl2_Offer Ecore_Wl2_Offer;
46 /** @internal */
47 typedef struct _Ecore_Wl2_Surface Ecore_Wl2_Surface;
48 // TIZEN_ONLY(20171109): support a tizen_input_device_manager interface
49 /** @internal */
50 typedef struct _Ecore_Wl2_Tizen_Input_Eo_Device Ecore_Wl2_Tizen_Input_Eo_Device;
51 /** @internal */
52 typedef struct _Ecore_Wl2_Tizen_Input_Device Ecore_Wl2_Tizen_Input_Device;
53 //
54
55 /**
56  * @ingroup Ecore_Wl2_Group
57  *
58  * @typedef Ecore_Wl2_Event_Connect
59  * Type for Ecore_Wl2_Event_Connect
60  */
61 typedef struct _Ecore_Wl2_Event_Connection Ecore_Wl2_Event_Connect;
62
63 /**
64  * @ingroup Ecore_Wl2_Group
65  *
66  * @typedef Ecore_Wl2_Event_Disconnect
67  * Type for Ecore_Wl2_Event_Disconnect
68  */
69 typedef struct _Ecore_Wl2_Event_Connection Ecore_Wl2_Event_Disconnect;
70
71 struct _Ecore_Wl2_Event_Connection
72 {
73    Ecore_Wl2_Display *display;
74 };
75
76 /**
77  * @ingroup Ecore_Wl2_Group
78  *
79  * @typedef Ecore_Wl2_Event_Global
80  * Type for _Ecore_Wl2_Event_Global
81  */
82 typedef struct _Ecore_Wl2_Event_Global
83 {
84    Ecore_Wl2_Display *display;
85    Eina_Stringshare *interface;
86    unsigned int id, version;
87 } Ecore_Wl2_Event_Global;
88
89 /**
90  * @ingroup Ecore_Wl2_Group
91  *
92  * @typedef Ecore_Wl2_Event_Window_Configure
93  * Type for Ecore_Wl2_Event_Window_Configure
94  */
95 typedef struct _Ecore_Wl2_Event_Window_Configure
96 {
97    unsigned int win, event_win, edges;
98 // TIZEN_ONLY
99    int x, y;
100 //
101    unsigned int w, h;
102    unsigned int states;
103 } Ecore_Wl2_Event_Window_Configure;
104
105 /**
106  * @ingroup Ecore_Wl2_Group
107  *
108  * @typedef Ecore_Wl2_Event_Window_Configure_Complete
109  * Type for Ecore_Wl2_Event_Window_Configure_Complete
110  */
111 typedef struct _Ecore_Wl2_Event_Window_Configure_Complete
112 {
113    unsigned int win;
114 } Ecore_Wl2_Event_Window_Configure_Complete;
115
116 /*
117  * @ingroup Ecore_Wl2_Group
118  *
119  * @typedef Ecore_Wl2_Event_Window_Show
120  * Type for Ecore_Wl2_Event_Window_Show
121  */
122 typedef struct _Ecore_Wl2_Event_Window_Show
123 {
124    unsigned int win;
125    unsigned int parent_win;
126    unsigned int event_win;
127    // TIZEN_ONLY
128    unsigned int data[4];
129    //
130 } Ecore_Wl2_Event_Window_Show;
131
132 /*
133  * @ingroup Ecore_Wl2_Group
134  *
135  * @typedef Ecore_Wl2_Event_Window_Hide
136  * Type for Ecore_Wl2_Event_Window_Hide
137  */
138 typedef struct _Ecore_Wl2_Event_Window_Hide
139 {
140    unsigned int win;
141    unsigned int parent_win;
142    unsigned int event_win;
143 } Ecore_Wl2_Event_Window_Hide;
144
145 /*
146  * @ingroup Ecore_Wl2_Group
147  *
148  * @typedef Ecore_Wl2_Event_Window_Activate
149  * Type for Ecore_Wl2_Event_Window_Activate
150  */
151 typedef struct _Ecore_Wl2_Event_Window_Activate
152 {
153    unsigned int win;
154    unsigned int parent_win;
155    unsigned int event_win;
156 } Ecore_Wl2_Event_Window_Activate;
157
158 /*
159  * @ingroup Ecore_Wl2_Group
160  *
161  * @typedef Ecore_Wl2_Event_Window_Deactivate
162  * Type for Ecore_Wl2_Event_Window_Deactivate
163  */
164 typedef struct _Ecore_Wl2_Event_Window_Deactivate
165 {
166    unsigned int win;
167    unsigned int parent_win;
168    unsigned int event_win;
169 } Ecore_Wl2_Event_Window_Deactivate;
170
171 typedef struct _Ecore_Wl2_Event_Window_Common
172 {
173    unsigned int win;
174    unsigned int parent_win;
175    unsigned int event_win;
176 } Ecore_Wl2_Event_Window_Common;
177
178 /*
179  * @ingroup Ecore_Wl2_Group
180  *
181  * @typedef Ecore_Wl2_Event_Window_Lower
182  * Type for Ecore_Wl2_Event_Window_Lower
183  */
184 typedef struct _Ecore_Wl2_Event_Window_Lower
185 {
186    unsigned int win;
187    unsigned int timestamp;
188 } Ecore_Wl2_Event_Window_Lower;
189
190 /* matches protocol values */
191 /** @internal */
192 typedef enum
193 {
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;
200
201 /** @internal */
202 typedef enum
203 {
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;
209
210 /** @internal */
211 typedef struct _Ecore_Wl2_Global
212 {
213    Eina_Stringshare *interface;
214    unsigned int id, version;
215    Ecore_Wl2_Display *display;
216 } Ecore_Wl2_Global;
217
218 /** @internal */
219 typedef struct _Ecore_Wl2_Event_Focus_In
220 {
221    unsigned int window;
222    unsigned int timestamp;
223    Eo *dev; //The seat device
224    Ecore_Wl2_Display *display;
225 } Ecore_Wl2_Event_Focus_In;
226
227 /** @internal */
228 typedef struct _Ecore_Wl2_Event_Focus_Out
229 {
230    unsigned int window;
231    unsigned int timestamp;
232    Eo *dev; //The seat device
233    Ecore_Wl2_Display *display;
234 } Ecore_Wl2_Event_Focus_Out;
235
236 /** @internal */
237 typedef struct _Ecore_Wl2_Event_Dnd_Enter
238 {
239    unsigned int win, source;
240    Ecore_Wl2_Offer *offer;
241    int x, y;
242    unsigned int seat;
243    Ecore_Wl2_Display *display;
244 } Ecore_Wl2_Event_Dnd_Enter;
245
246 /** @internal */
247 typedef struct _Ecore_Wl2_Event_Dnd_Leave
248 {
249    unsigned int win, source;
250    Ecore_Wl2_Offer *offer;
251    unsigned int seat;
252    Ecore_Wl2_Display *display;
253 } Ecore_Wl2_Event_Dnd_Leave;
254
255 /** @internal */
256 typedef struct _Ecore_Wl2_Event_Dnd_Motion
257 {
258    unsigned int win, source;
259    Ecore_Wl2_Offer *offer;
260    int x, y;
261    unsigned int seat;
262    Ecore_Wl2_Display *display;
263 } Ecore_Wl2_Event_Dnd_Motion;
264
265 /** @internal */
266 typedef struct _Ecore_Wl2_Event_Dnd_Drop
267 {
268    unsigned int win, source;
269    int x, y;
270    Ecore_Wl2_Offer *offer;
271    unsigned int seat;
272    Ecore_Wl2_Display *display;
273 } Ecore_Wl2_Event_Dnd_Drop;
274
275 /** @internal */
276 typedef struct _Ecore_Wl2_Event_Dnd_End
277 {
278    unsigned int win, source;
279    unsigned int seat;
280    Ecore_Wl2_Display *display;
281 } Ecore_Wl2_Event_Dnd_End;
282
283 /** @internal */
284 struct _Ecore_Wl2_Event_Data_Source_Event
285 {
286    unsigned int win, source;
287    Ecore_Wl2_Drag_Action action;
288    unsigned int seat;
289    uint32_t serial;
290    Ecore_Wl2_Display *display;
291 };
292
293 /** @internal */
294 typedef struct Ecore_Wl2_Event_Data_Source_End
295 {
296    unsigned int win, source;
297    Ecore_Wl2_Drag_Action action;
298    unsigned int seat;
299    uint32_t serial;
300    Ecore_Wl2_Display *display;
301    Eina_Bool cancelled;
302 } Ecore_Wl2_Event_Data_Source_End;
303
304 /** @internal */
305 typedef struct _Ecore_Wl2_Event_Data_Source_Event Ecore_Wl2_Event_Data_Source_Drop;
306 /** @internal */
307 typedef struct _Ecore_Wl2_Event_Data_Source_Event Ecore_Wl2_Event_Data_Source_Action;
308
309 /** @internal */
310 typedef struct _Ecore_Wl2_Event_Data_Source_Target
311 {
312    char *type;
313    unsigned int seat;
314    Ecore_Wl2_Display *display;
315 } Ecore_Wl2_Event_Data_Source_Target;
316
317 /** @internal */
318 typedef struct _Ecore_Wl2_Event_Data_Source_Send
319 {
320    char *type;
321    int fd;
322    unsigned int seat;
323    uint32_t serial;
324    Ecore_Wl2_Display *display;
325 } Ecore_Wl2_Event_Data_Source_Send;
326
327 /** @internal */
328 typedef struct Ecore_Wl2_Event_Seat_Selection
329 {
330    //TIZEN_ONLY(20180724): Supporting copy and paste for cbhm
331    int num_types;
332    const char **types;
333    //
334    unsigned int seat;
335    Ecore_Wl2_Display *display;
336 } Ecore_Wl2_Event_Seat_Selection;
337
338 /** @internal */
339 typedef struct _Ecore_Wl2_Event_Seat_Name
340 {
341    Eina_Stringshare *name;
342    unsigned int id;
343    Ecore_Wl2_Display *display;
344 } Ecore_Wl2_Event_Seat_Name;
345
346 /** @internal */
347 typedef struct _Ecore_Wl2_Event_Seat_Capabilities
348 {
349    unsigned int id;
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;
355
356 /** @internal */
357 typedef enum
358 {
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;
364
365 /** @internal */
366 typedef struct _Ecore_Wl2_Event_Device
367 {
368    Eo *dev;
369    int window_id;
370    unsigned int seat_id;
371    Ecore_Wl2_Device_Type type;
372 } Ecore_Wl2_Event_Device;
373
374 /** @internal */
375 typedef enum
376 {
377    ECORE_WL2_SELECTION_CNP,
378    ECORE_WL2_SELECTION_DND
379 } Ecore_Wl2_Selection_Type;
380
381 /** @internal */
382 typedef enum
383 {
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;
388
389 /** @internal */
390 typedef struct _Ecore_Wl2_Event_Input_Keymap_Changed
391 {
392    unsigned int id;
393    Ecore_Wl2_Display *display;
394 } Ecore_Wl2_Event_Seat_Keymap_Changed;
395
396 /** @internal */
397 typedef struct Ecore_Wl2_Event_Seat_Keyboard_Repeat_Changed
398 {
399    unsigned int id;
400    Ecore_Wl2_Display *display;
401 } Ecore_Wl2_Event_Seat_Keyboard_Repeat_Changed;
402
403 /** @internal */
404 typedef struct _Ecore_Wl2_Event_Sync_Done
405 {
406    Ecore_Wl2_Display *display;
407 } Ecore_Wl2_Event_Sync_Done;
408
409 /** @internal */
410 typedef struct _Ecore_Wl2_Event_Offer_Data_Ready
411 {
412    Ecore_Wl2_Offer *offer;
413    char *data;
414    int len;
415    const char *mimetype;
416    unsigned int seat;
417    Ecore_Wl2_Display *display;
418 } Ecore_Wl2_Event_Offer_Data_Ready;
419
420 /** @internal */
421 typedef struct _Ecore_Wl2_Event_Output_Transform
422 {
423    Ecore_Wl2_Output *output;
424    int transform, old_transform;
425 } Ecore_Wl2_Event_Output_Transform;
426
427 /** @internal */
428 typedef struct _Ecore_Wl2_Event_Window_Rotation
429 {
430    unsigned int win;
431    int rotation, w, h, angle;
432    Eina_Bool resize : 1;
433 } Ecore_Wl2_Event_Window_Rotation;
434
435 /** @internal */
436 typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Prepare;
437 /** @internal */
438 typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Prepare_Done;
439 /** @internal */
440 typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Request;
441 /** @internal */
442 typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Done;
443
444 /** @internal */
445 typedef struct _Ecore_Wl2_Event_Window_Iconify_State_Change
446 {
447    unsigned int win;
448    unsigned int iconified;
449    unsigned int force;
450 } Ecore_Wl2_Event_Window_Iconify_State_Change;
451
452 /** @internal */
453 typedef enum _Ecore_Wl2_Window_Type
454 {
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;
468
469 // TIZEN_ONLY(20171107): added wl enumerations from ecore_wayland to ecore_wl2
470 /** @internal */
471 typedef enum _Ecore_Wl2_Window_Visibility_Type
472 {
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;
479
480 /** @internal */
481 typedef enum _Ecore_Wl2_Window_Stack_Mode
482 {
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;
487
488 /** @internal */
489 typedef enum _Ecore_Wl2_Conformant_Part_Type
490 {
491    ECORE_WL2_INDICATOR_PART = 0,
492    ECORE_WL2_KEYBOARD_PART = 1,
493    ECORE_WL2_CLIPBOARD_PART = 2
494 } Ecore_Wl2_Conformant_Part_Type;
495
496 /** @internal */
497 typedef enum _Ecore_Wl2_Virtual_Keyboard_State
498 {
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;
503
504 /** @internal */
505 typedef enum _Ecore_Wl2_Indicator_State
506 {
507    ECORE_WL2_INDICATOR_STATE_UNKNOWN = 0,
508    ECORE_WL2_INDICATOR_STATE_OFF,
509    ECORE_WL2_INDICATOR_STATE_ON
510 } Ecore_Wl2_Indicator_State;
511
512 /** @internal */
513 typedef enum _Ecore_Wl2_Indicator_Opacity_Mode
514 {
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;
521
522 /** @internal */
523 typedef enum _Ecore_Wl2_Indicator_Visible_Type
524 {
525    ECORE_WL2_INDICATOR_VISIBLE_TYPE_HIDDEN = 0,
526    ECORE_WL2_INDICATOR_VISIBLE_TYPE_SHOWN,
527 } Ecore_Wl2_Indicator_Visible_Type;
528
529 /** @internal */
530 typedef enum _Ecore_Wl2_Clipboard_State
531 {
532    ECORE_WL2_CLIPBOARD_STATE_UNKNOWN = 0,
533    ECORE_WL2_CLIPBOARD_STATE_OFF,
534    ECORE_WL2_CLIPBOARD_STATE_ON
535 } Ecore_Wl2_Clipboard_State;
536 //
537
538 // TIZEN_ONLY(20221121): support a maximize direction
539 typedef enum _Ecore_Wl2_Maximize_Direction
540 {
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;
546 //
547
548 /** @internal */
549 typedef struct _Ecore_Wl2_Event_Aux_Hint_Allowed
550 {
551    unsigned int win;
552    int id;
553    Ecore_Wl2_Display *display;
554 } Ecore_Wl2_Event_Aux_Hint_Allowed;
555
556 /** @internal */
557 typedef struct _Ecore_Wl2_Event_Aux_Hint_Supported
558 {
559    unsigned int win;
560    Ecore_Wl2_Display *display;
561 } Ecore_Wl2_Event_Aux_Hint_Supported;
562
563 /** @internal */
564 typedef struct Ecore_Wl2_Event_Aux_Message
565 {
566    unsigned int win;
567    Eina_Stringshare *key;
568    Eina_Stringshare *val;
569    Eina_List *options;
570    Ecore_Wl2_Display *display;
571 } Ecore_Wl2_Event_Aux_Message;
572
573 /** @internal */
574 typedef struct Ecore_Wl2_Event_Window_Offscreen
575 {
576    unsigned int win;
577 } Ecore_Wl2_Event_Window_Offscreen;
578
579 /** @internal */
580 typedef struct _Ecore_Wl2_Buffer Ecore_Wl2_Buffer;
581
582 /** @internal */
583 typedef enum _Ecore_Wl2_Buffer_Type
584 {
585    ECORE_WL2_BUFFER_NONE = 0,
586    ECORE_WL2_BUFFER_SHM = 1,
587    ECORE_WL2_BUFFER_DMABUF = 2
588 } Ecore_Wl2_Buffer_Type;
589
590 // TIZEN_ONLY(20171107): added wl evet structures from ecore_wayland to ecore_wl2
591 /** @internal */
592 typedef struct _Ecore_Wl2_Event_Window_Visibility_Change
593 {
594    unsigned int win;
595    int          fully_obscured;
596 } Ecore_Wl2_Event_Window_Visibility_Change;
597
598 /** @internal */
599 typedef struct _Ecore_Wl2_Event_Window_Pre_Visibility_Change
600 {
601    unsigned int win;
602    Ecore_Wl2_Window_Visibility_Type type;
603    unsigned int option;
604 } Ecore_Wl2_Event_Window_Pre_Visibility_Change;
605
606 /** @internal */
607 typedef struct _Ecore_Wl2_Event_Window_Redraw_Request
608 {
609    unsigned int win;
610 } Ecore_Wl2_Event_Window_Redraw_Request;
611
612 /** @internal */
613 typedef struct _Ecore_Wl2_Event_Dnd_Position
614 {
615    unsigned int win, source;
616    struct
617      {
618         int x, y;
619      } position;
620 } Ecore_Wl2_Event_Dnd_Position;
621
622 /** @internal */
623 typedef struct _Ecore_Wl2_Event_Data_Source_Cancelled
624 {
625    unsigned int win, source;
626 } Ecore_Wl2_Event_Data_Source_Cancelled;
627
628 /** @internal */
629 typedef struct _Ecore_Wl2_Event_Selection_Data_Ready
630 {
631    char *data;
632    int len;
633    Eina_Bool done;
634    char **types;
635    int num_types;
636    Ecore_Wl2_Selection_Type sel_type;
637 } Ecore_Wl2_Event_Selection_Data_Ready;
638
639 /** @internal */
640 typedef struct _Ecore_Wl2_Event_Conformant_Change
641 {
642    unsigned int win;
643    Ecore_Wl2_Conformant_Part_Type part_type;
644    Eina_Bool state;
645 } Ecore_Wl2_Event_Conformant_Change;
646
647 typedef struct _Ecore_Wl2_Event_Effect
648 {
649    int win;
650    unsigned int type;
651 } Ecore_Wl2_Event_Effect;
652
653 /** @internal */
654 typedef struct _Ecore_Wl2_Event_Effect Ecore_Wl2_Event_Effect_Start;
655 /** @internal */
656 typedef struct _Ecore_Wl2_Event_Effect Ecore_Wl2_Event_Effect_End;
657
658 /** @internal */
659 typedef struct _Ecore_Wl2_Event_Ignore_Output_Transform
660 {
661    Ecore_Wl2_Window *win;
662    Eina_Bool ignore;
663 } Ecore_Wl2_Event_Ignore_Output_Transform;
664
665 /** @internal */
666 typedef struct _Ecore_Wl2_Event_Indicator_Flick
667 {
668    unsigned int win;
669    int type;
670 } Ecore_Wl2_Event_Indicator_Flick;
671
672 /** @internal */
673 typedef struct _Ecore_Wl2_Event_Clipboard_Data_Selected
674 {
675    unsigned int win;
676 } Ecore_Wl2_Event_Clipboard_Data_Selected;
677 //
678
679 // TIZEN_ONLY(20211120)
680 /** @internal */
681 typedef struct _Ecore_Wl2_Event_Window_Interactive_Move_Done
682 {
683    unsigned int win;
684    int x;
685    int y;
686    unsigned int w;
687    unsigned int h;
688    int angle;
689 } Ecore_Wl2_Event_Window_Interactive_Move_Done;
690
691 /** @internal */
692 typedef struct _Ecore_Wl2_Event_Window_Interactive_Resize_Done
693 {
694    unsigned int win;
695    int x;
696    int y;
697    unsigned int w;
698    unsigned int h;
699    int angle;
700 } Ecore_Wl2_Event_Window_Interactive_Resize_Done;
701 //
702
703 /** @internal */
704 typedef struct _Ecore_Wl2_Keygrab_Info
705 {
706    int key;
707    int mode;
708    int err;
709 } Ecore_Wl2_Keygrab_Info;
710
711 /** @internal */
712 typedef struct _Ecore_Wl2_Keyungrab_Info
713 {
714    int key;
715    int err;
716 } Ecore_Wl2_Keyungrab_Info;
717
718 /** @internal */
719 typedef struct _Ecore_Wl2_Surface_Interface
720 {
721    int id;
722    int version;
723
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;
733
734 /** @internal */
735 typedef void (*Ecore_Wl2_Bind_Cb)(struct wl_client *client, void *data, uint32_t version, uint32_t id);
736 /** @internal */
737 typedef void (*Ecore_Wl2_Unbind_Cb)(struct wl_resource *resource);
738
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 */
798 //
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;
802 //
803
804
805 /**
806  * @internal
807  *
808  * Create a new Wayland display
809  *
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
812  * compositors.
813  *
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
817  *
818  * @ingroup Ecore_Wl2_Display_Group
819  * @since 1.17
820  */
821 EAPI Ecore_Wl2_Display *ecore_wl2_display_create(const char *name);
822
823 /**
824  * @internal
825  *
826  * Destroy an existing Wayland display
827  *
828  * @brief This function is typically used by servers to terminate an
829  * existing Wayland display.
830  *
831  * @param display The display to terminate
832  *
833  * @ingroup Ecore_Wl2_Display_Group
834  * @since 1.17
835  */
836 EAPI void ecore_wl2_display_destroy(Ecore_Wl2_Display *display);
837
838 /**
839  * @internal
840  *
841  * Terminate a Wayland display's main loop
842  *
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.
846  *
847  * @param display The Ecore_Wl2_Display to terminate
848  *
849  * @ingroup Ecore_Wl2_Display_Group
850  * @since 1.17
851  */
852 EAPI void ecore_wl2_display_terminate(Ecore_Wl2_Display *display);
853
854 /**
855  * @internal
856  *
857  * Retrieve the existing Wayland display
858  *
859  * @param display The Ecore_Wl2_Display for which to retrieve the existing
860  *                Wayland display from
861  *
862  * @return The wl_display which this Ecore_Wl2_Display is using
863  *
864  * @ingroup Ecore_Wl2_Display_Group
865  * @since 1.17
866  */
867 EAPI struct wl_display *ecore_wl2_display_get(Ecore_Wl2_Display *display);
868
869 /**
870  * @internal
871  *
872  * Retrieve the wl_shm from a given Ecore_Wl2_Display
873  *
874  * @param display The Ecore_Wl2_Display for which to retrieve the existing
875  *                Wayland shm interface from
876  *
877  * @return The wl_shm which this Ecore_Wl2_Display is using
878  *
879  * @ingroup Ecore_Wl2_Display_Group
880  * @since 1.17
881  */
882 EAPI struct wl_shm *ecore_wl2_display_shm_get(Ecore_Wl2_Display *display);
883
884 /**
885  * @internal
886  *
887  * Retrieve the wl_dmabuf from a given Ecore_Wl2_Display
888  *
889  *
890  * @param display The Ecore_Wl2_Display for which to retrieve the existing
891  *                Wayland dmabuf interface from
892  *
893  * @return The wl_dmabuf which this Ecore_Wl2_Display is using
894  *
895  * @ingroup Ecore_Wl2_Display_Group
896  *
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
901  *       wayland-protocols.
902  *
903  * @since 1.18
904  */
905 EAPI void *ecore_wl2_display_dmabuf_get(Ecore_Wl2_Display *display);
906
907 /**
908  * @internal
909  *
910  * Return an Eina_Iterator that can be used to iterate through globals
911  *
912  * @param display The Ecore_Wl2_Display for which to return a global iterator
913  *
914  * @note The caller of this function should free the returned Eina_Iterator
915  * when finished with it.
916  *
917  * @ingroup Ecore_Wl2_Display_Group
918  * @since 1.17
919  */
920 EAPI Eina_Iterator *ecore_wl2_display_globals_get(Ecore_Wl2_Display *display);
921
922 /**
923  * @internal
924  *
925  * Get all the Ecore_Wl2_Input from the display.
926  *
927  * @param display The display
928  *
929  * @return A Eina_Iterator of Ecore_Wl2_Input or @c NULL on error
930  *
931  * @ingroup Ecore_Wl2_Display_Group
932  * @since 1.19
933  */
934 EAPI Eina_Iterator *ecore_wl2_display_inputs_get(Ecore_Wl2_Display *display);
935
936 /**
937  * @internal
938  *
939  * Find a seat for a given display object using the seat id
940  *
941  * @param display The display
942  * @param id The seat id
943  *
944  * @return The corresponding Ecore_Wl2_Input object or @c NULL if no match is found
945  *
946  * @ingroup Ecore_Wl2_Display_Group
947  * @since 1.20
948  */
949 EAPI Ecore_Wl2_Input *ecore_wl2_display_input_find(const Ecore_Wl2_Display *display, unsigned int id);
950
951 /**
952  * @internal
953  *
954  * Find a seat for a given display object using the seat id
955  *
956  * @param display The display
957  * @param name The seat name
958  *
959  * @return The corresponding Ecore_Wl2_Input object or @c NULL if no match is found
960  *
961  * @ingroup Ecore_Wl2_Display_Group
962  * @since 1.20
963  */
964 EAPI Ecore_Wl2_Input *ecore_wl2_display_input_find_by_name(const Ecore_Wl2_Display *display, const char *name);
965
966 /**
967  * @internal
968  *
969  * Retrieves the Wayland Registry used for the current Wayland display.
970  *
971  * @param display The display to get the registry of
972  *
973  * @return The current wayland registry, or NULL on error
974  *
975  * @ingroup Ecore_Wl2_Display_Group
976  * @since 1.17
977  */
978 EAPI struct wl_registry *ecore_wl2_display_registry_get(Ecore_Wl2_Display *display);
979
980 /**
981  * @internal
982  *
983  * Check if the display has performed a sync
984  *
985  * @param display The display
986  *
987  * @return True if the display sync has occurred
988  * @see ECORE_WL2_EVENT_SYNC_DONE
989  *
990  * @ingroup Ecore_Wl2_Display_Group
991  * @since 1.20
992  */
993 EAPI Eina_Bool ecore_wl2_display_sync_is_done(const Ecore_Wl2_Display *display);
994
995 /**
996  * @internal
997  *
998  * Get the name of the display object
999  *
1000  * @param display The display
1001  *
1002  * @return The name of the display object
1003  *
1004  * @ingroup Ecore_Wl2_Display_Group
1005  * @since 1.20
1006  */
1007 EAPI const char *ecore_wl2_display_name_get(const Ecore_Wl2_Display *display);
1008
1009 /**
1010  * @internal
1011  *
1012  * Finds an Ecore_Wl2_Window based on wl_surface
1013  *
1014  * @param display The display to search for the window
1015  * @param surface The wl_surface of the window to find
1016  *
1017  * @return The Ecore_Wl2_Window if found, or NULL if no such window exists
1018  *
1019  * @ingroup Ecore_Wl2_Display_Group
1020  * @since 1.24
1021  */
1022 EAPI Ecore_Wl2_Window *ecore_wl2_display_window_find_by_surface(Ecore_Wl2_Display *display, struct wl_surface *surface);
1023
1024 /**
1025  * @internal
1026  *
1027  * Gets the wl_compositor which belongs to this display
1028  *
1029  * @param display The Ecore_Wl2_Display to get the compositor of
1030  *
1031  * @return The wl_compositor associated with this display
1032  *
1033  * @ingroup Ecore_Wl2_Display_Group
1034  * @since 1.24
1035  */
1036 EAPI struct wl_compositor *ecore_wl2_display_compositor_get(Ecore_Wl2_Display *display);
1037
1038 /**
1039  * @internal
1040  *
1041  * Return the version of the display's compositor object
1042  *
1043  * @param disp the display to get the compositor object version from
1044  *
1045  * @return the version of the display's compositor object
1046  *
1047  * @ingroup Ecore_Wl2_Display_Group
1048  * @since 1.17
1049  */
1050 EAPI int ecore_wl2_display_compositor_version_get(Ecore_Wl2_Display *disp);
1051
1052 /**
1053  * @internal
1054  *
1055  * Set a callback to be caleld just before the window is closed and freed
1056  *
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
1060  *
1061  * @ingroup Ecore_Wl2_Window_Group
1062  * @since 1.24
1063  */
1064 EAPI void ecore_wl2_window_close_callback_set(Ecore_Wl2_Window *window, void (*cb) (void *data, Ecore_Wl2_Window *win), void *data);
1065
1066 /**
1067  * @internal
1068  *
1069  * Set a callback to be called after the window's visibility is changed
1070  *
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
1074  *
1075  * @ingroup Ecore_Wl2_Window_Group
1076  * @since_tizen 7.0
1077  */
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);
1079
1080 /**
1081  * @internal
1082  *
1083  * Get the wl_surface which belongs to this window
1084  *
1085  * @param window The Ecore_Wl2_Window to get the surface of
1086  *
1087  * @return The wl_surface associated with this window.
1088  *
1089  * @ingroup Ecore_Wl2_Window_Group
1090  * @since 1.17
1091  */
1092 EAPI struct wl_surface *ecore_wl2_window_surface_get(Ecore_Wl2_Window *window);
1093
1094 /**
1095  * @internal
1096  *
1097  * Get the id of a given Ecore_Wl2_Window
1098  *
1099  * @param window The window to return the id of
1100  *
1101  * @return The id of the given window, or -1 on failure
1102  *
1103  * @ingroup Ecore_Wl2_Window_Group
1104  * @since 1.17
1105  */
1106 EAPI int ecore_wl2_window_surface_id_get(Ecore_Wl2_Window *window);
1107
1108 /**
1109  * @internal
1110  *
1111  * @see evas_object_size_hint_aspect_set
1112  * @ingroup Ecore_Wl2_Window_Group
1113  * @since 1.21
1114  */
1115 EAPI void ecore_wl2_window_aspect_set(Ecore_Wl2_Window *window, int w, int h, unsigned int aspect);
1116
1117 /**
1118  * @internal
1119  *
1120  * @see evas_object_size_hint_aspect_get
1121  * @ingroup Ecore_Wl2_Window_Group
1122  * @since 1.24
1123  */
1124 EAPI void ecore_wl2_window_aspect_get(Ecore_Wl2_Window *window, int *w, int *h, unsigned int *aspect);
1125
1126 /**
1127  * @internal
1128  *
1129  * @brief Begin moving a given Ecore_Wl2_Window
1130  *
1131  * @param window The Ecore_Wl2_Window which to move
1132  * @param input The seat on which the move is active on
1133  *
1134  * @ingroup Ecore_Wl2_Window_Group
1135  * @since 1.20
1136  */
1137 EAPI void ecore_wl2_window_move(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
1138
1139 /**
1140  * @internal
1141  *
1142  * @brief Begin resizing a given window
1143  *
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
1147  *
1148  * @ingroup Ecore_Wl2_Window_Group
1149  * @since 1.20
1150  */
1151 EAPI void ecore_wl2_window_resize(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input, int location);
1152
1153 // TIZEN_ONLY(20171108): tizen window function
1154 /** @internal */
1155 EAPI void ecore_wl2_window_parent_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window *parent);
1156 /** @internal */
1157 EAPI void ecore_wl2_window_stack_mode_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Stack_Mode mode);
1158 /** @internal */
1159 EAPI void ecore_wl2_window_position_set(Ecore_Wl2_Window *window, int x, int y);
1160 /** @internal */
1161 EAPI int ecore_wl2_window_active_angle_get(Ecore_Wl2_Window *window);
1162 //
1163
1164 //TIZEN_ONLY(20210721)
1165 /**
1166  * @internal
1167  *
1168  * Set a parent window of Ecore_Wl2_Window
1169  *
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.
1173  *
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
1178  *
1179  * @ingroup Ecore_Wl2_Window_Group
1180  * @since_tizen 6.5
1181  */
1182 EAPI void ecore_wl2_window_transient_parent_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window *parent, Eina_Bool place_below);
1183 //
1184
1185 //TIZEN_ONLY(20171216): add ecore_wl2_window_find
1186 /** @internal */
1187 EAPI Ecore_Wl2_Window *ecore_wl2_window_find(unsigned int id);
1188 //
1189
1190 /**
1191  * @internal
1192  *
1193  * Set a given window's transparent property
1194  *
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
1198  *
1199  * @ingroup Ecore_Wl2_Window_Group
1200  * @since 1.17
1201  */
1202 EAPI void ecore_wl2_window_transparent_set(Ecore_Wl2_Window *window, Eina_Bool transparent);
1203
1204 // TIZEN_ONLY(20171108) : Get a window's transparent property
1205 /** @internal */
1206 EAPI Eina_Bool ecore_wl2_window_transparent_get(Ecore_Wl2_Window *window);
1207 //
1208
1209 /**
1210  * @internal
1211  *
1212  * Set the opaque region of the Ecore_Wl2_Window
1213  *
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.
1219  *
1220  * @ingroup Ecore_Wl2_Window_Group
1221  * @since 1.17
1222  */
1223 EAPI void ecore_wl2_window_opaque_region_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
1224
1225 // TIZEN_ONLY(20160201) : support to handle input rectangle
1226 /** @internal */
1227 EAPI void ecore_wl2_window_input_rect_set(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
1228 /** @internal */
1229 EAPI void ecore_wl2_window_input_rect_add(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
1230 /** @internal */
1231 EAPI void ecore_wl2_window_input_rect_subtract(Ecore_Wl2_Window *win, Eina_Rectangle *input_rect);
1232 //
1233
1234 /**
1235  * @internal
1236  *
1237  * Get the opaque region of the Ecore_Wl2_Window
1238  *
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.
1244  *
1245  * @ingroup Ecore_Wl2_Window_Group
1246  * @since 1.24
1247  */
1248 EAPI void ecore_wl2_window_opaque_region_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
1249
1250 /**
1251  * @internal
1252  *
1253  * Set the input region of the Ecore_Wl2_Window.
1254  *
1255  * To set an empty region, pass width and height as 0.
1256  *
1257  * An empty input region means the entire window surface will accept input.
1258  *
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.
1264  *
1265  * @ingroup Ecore_Wl2_Window_Group
1266  * @since 1.17
1267  */
1268 EAPI void ecore_wl2_window_input_region_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
1269
1270 /**
1271  * @internal
1272  *
1273  * Get the input region of the Ecore_Wl2_Window.
1274  *
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.
1280  *
1281  * @ingroup Ecore_Wl2_Window_Group
1282  * @since 1.24
1283  */
1284 EAPI void ecore_wl2_window_input_region_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
1285
1286 /**
1287  * @internal
1288  *
1289  * Get if a given window is maximized
1290  *
1291  * @param window The window to get the maximized state of
1292  *
1293  * @return EINA_TRUE if window is maximized, EINA_FALSE otherwise
1294  *
1295  * @ingroup Ecore_Wl2_Window_Group
1296  * @since 1.17
1297  */
1298 EAPI Eina_Bool ecore_wl2_window_maximized_get(Ecore_Wl2_Window *window);
1299
1300 /**
1301  * @internal
1302  *
1303  * Set the maximized state of a given window
1304  *
1305  * @param window The window to set the maximized state of
1306  * @param maximized EINA_TRUE to set maximized, EINA_FALSE to unset
1307  *
1308  * @ingroup Ecore_Wl2_Window_Group
1309  * @since 1.17
1310  */
1311 EAPI void ecore_wl2_window_maximized_set(Ecore_Wl2_Window *window, Eina_Bool maximized);
1312
1313 // TIZEN_ONLY(20221121): support a maximize direction
1314 /**
1315  * @internal
1316  *
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).
1321  *
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
1324  *
1325  * @see ecore_wl2_window_maximized_set
1326  * @ingroup Ecore_Wl2_Window_Group
1327  */
1328 EAPI void ecore_wl2_window_maximized_set_with_direction(Ecore_Wl2_Window *window, Ecore_Wl2_Maximize_Direction direction);
1329 //
1330
1331 // TIZEN_ONLY(20230320): support a layout window
1332 EAPI Eina_Bool
1333 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);
1334 //
1335
1336 /**
1337  * @internal
1338  *
1339  * Get if a given window is fullscreen
1340  *
1341  * @param window The window to get the fullscreen state of
1342  *
1343  * @return EINA_TRUE if window is fullscreen, EINA_FALSE otherwise
1344  *
1345  * @ingroup Ecore_Wl2_Window_Group
1346  * @since 1.17
1347  */
1348 EAPI Eina_Bool ecore_wl2_window_fullscreen_get(Ecore_Wl2_Window *window);
1349
1350 /**
1351  * @internal
1352  *
1353  * Set the fullscreen state of a given window
1354  *
1355  * @param window The window to set the fullscreen state of
1356  * @param fullscreen EINA_TRUE to set fullscreen, EINA_FALSE to unset
1357  *
1358  * @ingroup Ecore_Wl2_Window_Group
1359  * @since 1.17
1360  */
1361 EAPI void ecore_wl2_window_fullscreen_set(Ecore_Wl2_Window *window, Eina_Bool fullscreen);
1362
1363 /**
1364  * @internal
1365  *
1366  * Get if a given window is rotated
1367  *
1368  * @param window The window to get the rotation of
1369  *
1370  * @return The amount of rotation for this window, or -1 on failure
1371  *
1372  * @ingroup Ecore_Wl2_Window_Group
1373  * @since 1.17
1374  */
1375 EAPI int ecore_wl2_window_rotation_get(Ecore_Wl2_Window *window);
1376
1377 /**
1378  * @internal
1379  *
1380  * Set the rotation of a given window
1381  *
1382  * @param window The window to set the rotation of
1383  * @param rotation The amount of rotation
1384  *
1385  * @ingroup Ecore_Wl2_Window_Group
1386  * @since 1.17
1387  */
1388 EAPI void ecore_wl2_window_rotation_set(Ecore_Wl2_Window *window, int rotation);
1389
1390 /**
1391  * @internal
1392  *
1393  * Set the class of a given window
1394  *
1395  * @param window The window to set the class of
1396  * @param clas The class of the window
1397  *
1398  * @ingroup Ecore_Wl2_Window_Group
1399  * @since 1.17
1400  */
1401 EAPI void ecore_wl2_window_class_set(Ecore_Wl2_Window *window, const char *clas);
1402
1403 /**
1404  * @internal
1405  *
1406  * Get the class of a given window
1407  *
1408  * @param window The window to set the class of
1409  *
1410  * @return A string if found, or NULL otherwise
1411  *
1412  * @ingroup Ecore_Wl2_Window_Group
1413  * @since 1.24
1414  */
1415 EAPI const char *ecore_wl2_window_class_get(Ecore_Wl2_Window *window);
1416
1417 /**
1418  * @internal
1419  *
1420  * Get the geometry of a given window
1421  *
1422  * @brief The window geometry returned here is the window geometry as
1423  * recognized by xdg_surface_set_window_geometry. As such, it represents the
1424  * "visible bounds" of a window from the user's perspective.
1425  *
1426  * @param window The window to get the geometry of
1427  * @param x The left point of the window geometry
1428  * @param y The top point of the window geometry
1429  * @param w The width of the window geometry
1430  * @param h The height of the window geometry
1431  *
1432  * @ingroup Ecore_Wl2_Window_Group
1433  * @since 1.17
1434  */
1435 EAPI void ecore_wl2_window_geometry_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
1436
1437 /**
1438  * @internal
1439  *
1440  * Set the geometry of a given window
1441  *
1442  * @brief The window geometry referenced here is the window geometry as
1443  * recognized by xdg_surface_set_window_geometry. As such, it represents the
1444  * "visible bounds" of a window from the user's perspective.
1445  *
1446  * @param window The window to set the geometry of
1447  * @param x The left point of the window geometry
1448  * @param y The top point of the window geometry
1449  * @param w The width of the window geometry
1450  * @param h The height of the window geometry
1451  *
1452  * @ingroup Ecore_Wl2_Window_Group
1453  * @since 1.17
1454  */
1455 EAPI void ecore_wl2_window_geometry_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
1456
1457 //TIZEN_ONLY(20220325): added min / max size set to window
1458 /**
1459  * @internal
1460  *
1461  * Set the minimum size of a given window
1462  *
1463  * @param window The window to set the minimum size of
1464  * @param w The minimum width of the window size
1465  * @param h The minimum height of the window size
1466  *
1467  * @ingroup Ecore_Wl2_Window_Group
1468  * @since 1.17
1469  */
1470 EAPI void ecore_wl2_window_minimum_size_set(Ecore_Wl2_Window *window, int w, int h);
1471
1472 /**
1473  * @internal
1474  *
1475  * Set the maximum size of a given window
1476  *
1477  * @param window The window to set the maximum size of
1478  * @param w The maximum width of the window size
1479  * @param h The maximum height of the window size
1480  *
1481  * @ingroup Ecore_Wl2_Window_Group
1482  * @since 1.17
1483  */
1484 EAPI void ecore_wl2_window_maximum_size_set(Ecore_Wl2_Window *window, int w, int h);
1485 //
1486
1487 /**
1488  * @internal
1489  *
1490  * Get the iconified state of a given window
1491  *
1492  * @param window The window to get the iconified state of
1493  *
1494  * @return EINA_TRUE if window is iconified, EINA_FALSE otherwise
1495  *
1496  * @ingroup Ecore_Wl2_Window_Group
1497  * @since 1.17
1498  */
1499 EAPI Eina_Bool ecore_wl2_window_iconified_get(Ecore_Wl2_Window *window);
1500
1501 /**
1502  * @internal
1503  *
1504  * Iconify a window
1505  *
1506  * @param win The window to iconifiy
1507  * @param iconified The new iconified state to set
1508  *
1509  * @ingroup Ecore_Wl2_Window_Group
1510  * @since 1.17
1511  */
1512 EAPI void ecore_wl2_window_iconified_set(Ecore_Wl2_Window *window, Eina_Bool iconified);
1513
1514 // TIZEN_ONLY(20151231) : handling iconic state on tizen
1515 /** @internal */
1516 EAPI void ecore_wl2_window_iconify_state_update(Ecore_Wl2_Window *window, Eina_Bool iconified, Eina_Bool send_event);
1517 //
1518
1519 /**
1520  * @internal
1521  *
1522  * Set the type of a given window
1523  *
1524  * @param window The window to set the type of
1525  * @param type The Ecore_Wl2_Window_Type to set on the window
1526  *
1527  * @ingroup Ecore_Wl2_Window_Group
1528  * @since 1.17
1529  */
1530 EAPI void ecore_wl2_window_type_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Type type);
1531
1532 /**
1533  * @internal
1534  *
1535  * Get the type of a given window
1536  *
1537  * @see Ecore_Wl2_Window_Type
1538  *
1539  * @ingroup Ecore_Wl2_Window_Group
1540  * @since 1.24
1541  */
1542 EAPI Ecore_Wl2_Window_Type ecore_wl2_window_type_get(Ecore_Wl2_Window *window);
1543
1544 /**
1545  * @internal
1546  *
1547  * Find the output that a given window is on
1548  *
1549  * @param window The window to find the output for
1550  *
1551  * @return An Ecore_Wl2_Output if found, or NULL otherwise
1552  *
1553  * @ingroup Ecore_Wl2_Window_Group
1554  * @since 1.20
1555  */
1556 EAPI Ecore_Wl2_Output *ecore_wl2_window_output_find(Ecore_Wl2_Window *window);
1557
1558 /**
1559  * @internal
1560  *
1561  * Set if window rotation is supported by the window manager
1562  *
1563  * @param window
1564  * @param enabled
1565  *
1566  * @ingroup Ecore_Wl2_Window_Group
1567  * @since 1.20
1568  */
1569 EAPI void ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, Eina_Bool enabled);
1570
1571 /**
1572  * @internal
1573  *
1574  * Get if window rotation is supported by the window manager
1575  *
1576  * @param window
1577  *
1578  * @return EINA_TRUE if supported, EINA_FALSE otherwise
1579  *
1580  * @ingroup Ecore_Wl2_Window_Group
1581  * @since 1.20
1582  */
1583 EAPI Eina_Bool ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window *window);
1584
1585 /**
1586  * @internal
1587  *
1588  * Set if an application has set window rotation
1589  *
1590  * @param window
1591  * @param set
1592  *
1593  * @ingroup Ecore_Wl2_Window_Group
1594  * @since 1.20
1595  */
1596 EAPI void ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, Eina_Bool set);
1597
1598 /**
1599  * @internal
1600  *
1601  * Get if an application has set window rotation
1602  *
1603  * @param window
1604  *
1605  * @return EINA_TRUE if set, EINA_FALSE otherwise
1606  *
1607  * @ingroup Ecore_Wl2_Window_Group
1608  * @since 1.20
1609  */
1610 EAPI Eina_Bool ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window);
1611
1612 /**
1613  * @internal
1614  *
1615  * Set preferred rotation on a given window
1616  *
1617  * @param window The window to set preferred rotation on
1618  * @param rot The value of the preferred rotation to set
1619  *
1620  * @ingroup Ecore_Wl2_Window_Group
1621  * @since 1.20
1622  */
1623 EAPI void ecore_wl2_window_preferred_rotation_set(Ecore_Wl2_Window *window, int rot);
1624
1625 /**
1626  * @internal
1627  *
1628  * Get preferred rotation for a given window
1629  *
1630  * @param window The window to get preferred rotation from
1631  *
1632  * @return Given windows preferred rotation
1633  *
1634  * @ingroup Ecore_Wl2_Window
1635  * @since 1.20
1636  */
1637 EAPI int ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window *window);
1638
1639 /**
1640  * @internal
1641  *
1642  * Set a windows available rotations
1643  *
1644  * @param window
1645  * @param rots
1646  * @param count
1647  *
1648  * @ingroup Ecore_Wl2_Window_Group
1649  * @since 1.20
1650  */
1651 EAPI void ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, const int *rots, unsigned int count);
1652
1653 /**
1654  * @internal
1655  *
1656  * Get a windows available rotations
1657  *
1658  * @param window
1659  * @param rots
1660  * @param count
1661  *
1662  * @return EINA_TRUE on success, EINA_FALSE otherwise
1663  *
1664  * @ingroup Ecore_Wl2_Window_Group
1665  * @since 1.20
1666  */
1667 EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, unsigned int *count);
1668 /** @internal */
1669 EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot, int w, int h, Eina_Bool resize);
1670 /** @internal */
1671 EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, int rot);
1672 /** @internal */
1673 EAPI void ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window *window, int rot);
1674 /** @internal */
1675 EAPI void ecore_wl2_window_rotation_change_done_send(Ecore_Wl2_Window *window, int rot, int w, int h);
1676 // TIZEN_ONLY
1677 /** @internal */
1678 EAPI void ecore_wl2_window_rotation_geometry_set(Ecore_Wl2_Window *win, int rot, int x, int y, int w, int h);
1679 /** @internal */
1680 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));
1681 //
1682
1683 // TIZEN_ONLY(20210330): support aux_hint generate
1684 /**
1685  * @internal
1686  *
1687  * Generate a auxiliary hint to a given window
1688  * It generates auxiliary hint ID in function and return the ID.
1689  * If there is already exist auxiliary hint that have the same name with "hint" parameter,
1690  * then change value of the hint and return exist hint's ID.
1691  *
1692  * @param win The window to add auxiliary hint
1693  * @param hint The name of hint to add
1694  * @param val The value of hint to add
1695  *
1696  * @return Hint ID on success, -1 on failure
1697  *
1698  * @ingroup Ecore_Wl2_Window_Group
1699  */
1700 EAPI int ecore_wl2_window_aux_hint_generate(Ecore_Wl2_Window *win, const char *hint, const char *val);
1701
1702 /**
1703  * @internal
1704  *
1705  * Get the hint ID of a given window
1706  *
1707  * @param win The window to get auxiliary hint ID
1708  * @param hint The name of hint to get ID
1709  *
1710  * @return Hint ID on success, -1 on failure
1711  *
1712  * @ingroup Ecore_Wl2_Window_Group
1713  */
1714 EAPI int ecore_wl2_window_aux_hint_id_get(Ecore_Wl2_Window *win, const char *hint);
1715
1716 /**
1717  * @internal
1718  *
1719  * Get the hint value of a given window
1720  *
1721  * @param win The window to get auxiliary hint value
1722  * @param id The ID of hint to get hint value
1723  *
1724  * @return Hint value on success, NULL on failure
1725  *
1726  * @ingroup Ecore_Wl2_Window_Group
1727  */
1728 EAPI const char *ecore_wl2_window_aux_hint_value_get(Ecore_Wl2_Window *win, int id);
1729 // END OF TIZEN_ONLY
1730
1731 /**
1732  * @internal
1733  *
1734  * Get list of supported auxiliary window hints
1735  *
1736  * @param window
1737  *
1738  * @return An Eina_List of supported auxiliary hints, or NULL otherwise
1739  *
1740  * @ingroup Ecore_Wl2_Window_Group
1741  * @since 1.20
1742  */
1743 EAPI Eina_List *ecore_wl2_window_aux_hints_supported_get(Ecore_Wl2_Window *window);
1744
1745 /**
1746  * @internal
1747  *
1748  * Add a supported auxiliary hint to a given window
1749  *
1750  * @param window
1751  * @param id
1752  * @param hint
1753  * @param val
1754  *
1755  * @ingroup Ecore_Wl2_Window_Group
1756  * @since 1.20
1757  */
1758 EAPI void ecore_wl2_window_aux_hint_add(Ecore_Wl2_Window *window, int id, const char *hint, const char *val);
1759
1760 /**
1761  * @internal
1762  *
1763  * Change an auxiliary hint on a given window
1764  *
1765  * @param window
1766  * @param id
1767  * @param val
1768  *
1769  * @ingroup Ecore_Wl2_Window_Group
1770  * @since 1.20
1771  */
1772 EAPI void ecore_wl2_window_aux_hint_change(Ecore_Wl2_Window *window, int id, const char *val);
1773
1774 /**
1775  * @internal
1776  *
1777  * Delete an auxiliary hint on a given window
1778  *
1779  * @param window
1780  * @param id
1781  *
1782  * @ingroup Ecore_Wl2_Window_Group
1783  * @since 1.20
1784  */
1785 EAPI void ecore_wl2_window_aux_hint_del(Ecore_Wl2_Window *window, int id);
1786
1787 /**
1788  * @internal
1789  *
1790  * @brief Get the activated state of a window
1791  *
1792  * @param window The window to get activated state from
1793  *
1794  * @return @c EINA_TRUE if activated
1795  *
1796  * @ingroup Ecore_Wl2_Window_Group
1797  * @since 1.20
1798  */
1799 EAPI Eina_Bool ecore_wl2_window_activated_get(const Ecore_Wl2_Window *window);
1800
1801 /**
1802  * @internal
1803  *
1804  * @brief Set the seat for a popup window to be used with grab
1805  *
1806  * @param window The window
1807  * @param input The seat
1808  *
1809  * Use this function for desktop shell requests involving popup grabs which require
1810  * a seat for the grab.
1811  *
1812  * @ingroup Ecore_Wl2_Window_Group
1813  * @since 1.20
1814  */
1815 EAPI void ecore_wl2_window_popup_input_set(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
1816
1817 /**
1818  * @internal
1819  *
1820  * @brief Get the seat for a popup window to be used with grab
1821  *
1822  * @param window The window
1823  *
1824  * @return Returns Ecore_Wl2_Input if the window has an input.
1825  *
1826  * @ingroup Ecore_Wl2_Window_Group
1827  * @since 1.24
1828  */
1829 EAPI Ecore_Wl2_Input *ecore_wl2_window_popup_input_get(Ecore_Wl2_Window *window);
1830
1831 /**
1832  * @internal
1833  *
1834  * Check if a window has a shell surface - without one it can't be visible.
1835  *
1836  * @param win The window to check
1837  *
1838  * @return Returns true if the window has an associated shell surface.
1839  *
1840  * @ingroup Ecore_Wl2_Window_Group
1841  * @since 1.19
1842  */
1843 EAPI Eina_Bool ecore_wl2_window_shell_surface_exists(Ecore_Wl2_Window *win);
1844
1845 // TIZEN_ONLY(171108) : get shell surface of a given window
1846 /** @internal */
1847 EAPI struct zxdg_surface_v6 *ecore_wl2_window_shell_surface_get(Ecore_Wl2_Window *window);
1848 //
1849
1850 /**
1851  * @internal
1852  *
1853  * Set the role of a given window
1854  *
1855  * @param window
1856  * @param role
1857  *
1858  * @ingroup Ecore_Wl2_Window_Group
1859  * @since 1.20
1860  */
1861 EAPI void ecore_wl2_window_role_set(Ecore_Wl2_Window *window, const char *role);
1862
1863 /**
1864  * @internal
1865  *
1866  * Get the role of a given window
1867  *
1868  * @param window The window to set the class role
1869  *
1870  * @return A string if found, or NULL otherwise
1871  *
1872  * @ingroup Ecore_Wl2_Window_Group
1873  * @since 1.24
1874  */
1875 EAPI const char *ecore_wl2_window_role_get(Ecore_Wl2_Window *window);
1876
1877 /**
1878  * @internal
1879  *
1880  * Set if a given window is in floating mode
1881  *
1882  * @param window The window to set floating mode on
1883  * @param floating EINA_TRUE if this window should be in floating mode, EINA_FALSE otherwise
1884  *
1885  * @ingroup Ecore_Wl2_Window_Group
1886  * @since 1.20
1887  */
1888 EAPI void ecore_wl2_window_floating_mode_set(Ecore_Wl2_Window *window, Eina_Bool floating);
1889
1890 /**
1891  * @internal
1892  *
1893  * Get if a given window is in floating mode
1894  *
1895  * @param window The window to get floating mode
1896  *
1897  * @return EINA_TRUE if floating, EINA_FALSE otherwise
1898  *
1899  * @ingroup Ecore_Wl2_Window_Group
1900  * @since 1.20
1901  */
1902 EAPI Eina_Bool ecore_wl2_window_floating_mode_get(Ecore_Wl2_Window *window);
1903
1904 /**
1905  * @internal
1906  *
1907  * Finds a window by surface
1908  *
1909  * @param surface The surface to find the window of
1910  *
1911  * @ingroup Ecore_Wl2_Window_Group
1912  * @since 1.24
1913  */
1914 EAPI Ecore_Wl2_Window *ecore_wl2_window_surface_find(struct wl_surface *surface);
1915
1916 /*
1917  * @internal
1918  *
1919  * Check if a wayland window's surface is in the pending state.
1920  *
1921  * A surface is pending if it's been commit but we haven't received a
1922  * frame callback for it yet.  This mean's we're not ready to draw yet.
1923  *
1924  * @param window The window whose surface we want to check
1925  *
1926  * @return whether the window's surface is pending or not.
1927  *
1928  * @since 1.21
1929  */
1930 EAPI Eina_Bool ecore_wl2_window_pending_get(Ecore_Wl2_Window *window);
1931
1932 /**
1933  * @internal
1934  *
1935  * Get if a given window is resizing
1936  *
1937  * @param window The window to check for resizing
1938  *
1939  * @return EINA_TRUE if resizing, EINA_FALSE otherwise
1940  *
1941  * @ingroup Ecore_Wl2_Window_Group
1942  * @since 1.21
1943  */
1944 EAPI Eina_Bool ecore_wl2_window_resizing_get(Ecore_Wl2_Window *window);
1945
1946 /**
1947  * @internal
1948  *
1949  * Latch window state at the start of an update
1950  *
1951  * When async render takes place we continue to dispatch wayland
1952  * events from the main loop. We need to defer any changes to
1953  * window state from those events until the update is complete.
1954  *
1955  * Events deferred during an update will automatically fire
1956  * immediately after the caller calls ecore_wl2_window_commit.
1957  *
1958  * @param window The window whose state we want to latch
1959  *
1960  * @since 1.21
1961  */
1962 EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window);
1963
1964 // TIZEN_ONLY(20171207): add functions to set client's custom cursors
1965 /** @internal */
1966 EAPI void ecore_wl2_window_pointer_set(Ecore_Wl2_Window *win, struct wl_surface *surface, int hot_x, int hot_y);
1967 /** @internal */
1968 EAPI void ecore_wl2_window_cursor_from_name_set(Ecore_Wl2_Window *win, const char *cursor_name);
1969 /** @internal */
1970 EAPI void ecore_wl2_window_cursor_default_restore(Ecore_Wl2_Window *win);
1971 //
1972 // TIZEN_ONLY(20150703) : support conformant
1973 /** @internal */
1974 EAPI void ecore_wl2_window_conformant_set(Ecore_Wl2_Window *win, unsigned int is_conformant);
1975 /** @internal */
1976 EAPI Eina_Bool ecore_wl2_window_conformant_get(Ecore_Wl2_Window *win);
1977 //
1978
1979 // TIZEN_ONLY(20171108) : add functions for indicator
1980 /** @internal */
1981 EAPI void ecore_wl2_window_indicator_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
1982 /** @internal */
1983 EAPI Eina_Bool ecore_wl2_window_indicator_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
1984 /** @internal */
1985 EAPI void ecore_wl2_window_indicator_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_State state);
1986 /** @internal */
1987 EAPI Ecore_Wl2_Indicator_State ecore_wl2_window_indicator_state_get(Ecore_Wl2_Window *win);
1988 /** @internal */
1989 EAPI void ecore_wl2_window_indicator_opacity_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Opacity_Mode mode);
1990 /** @internal */
1991 EAPI Ecore_Wl2_Indicator_Opacity_Mode ecore_wl2_window_indicator_opacity_get(Ecore_Wl2_Window *win);
1992 /** @internal */
1993 EAPI void ecore_wl2_indicator_visible_type_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Visible_Type type);
1994 /** @internal */
1995 EAPI Ecore_Wl2_Indicator_Visible_Type ecore_wl2_indicator_visible_type_get(Ecore_Wl2_Window *win);
1996 //
1997
1998 // TIZEN_ONLY(20171108) : add functions for clipboard
1999 /** @internal */
2000 EAPI void ecore_wl2_window_clipboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
2001 /** @internal */
2002 EAPI Eina_Bool ecore_wl2_window_clipboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
2003 /** @internal */
2004 EAPI void ecore_wl2_window_clipboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Clipboard_State state);
2005 /** @internal */
2006 EAPI Ecore_Wl2_Clipboard_State ecore_wl2_window_clipboard_state_get(Ecore_Wl2_Window *win);
2007 /** @internal */
2008 EAPI void ecore_wl2_clipboard_show(Ecore_Wl2_Window *win);
2009 /** @internal */
2010 EAPI void ecore_wl2_clipboard_hide(Ecore_Wl2_Window *win);
2011 /** @internal */
2012 EAPI Eina_Bool ecore_wl2_clipboard_data_only_set(Eina_Bool data_only);
2013 //
2014
2015 // TIZEN_ONLY(20171108) : add functions for keyboard
2016 /** @internal */
2017 EAPI void ecore_wl2_window_keyboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
2018 /** @internal */
2019 EAPI Eina_Bool ecore_wl2_window_keyboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
2020 /** @internal */
2021 EAPI void ecore_wl2_window_keyboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Virtual_Keyboard_State state);
2022 /** @internal */
2023 EAPI Ecore_Wl2_Virtual_Keyboard_State ecore_wl2_window_keyboard_state_get(Ecore_Wl2_Window *win);
2024 //
2025 // TIZEN_ONLY(20171107): add ecore_wl2_window_input_get() EAPI
2026 /** @internal */
2027 EAPI Ecore_Wl2_Input *ecore_wl2_window_input_get(Ecore_Wl2_Window *win);
2028 //
2029 // TIZEN_ONLY(20200326): add ecore_wl2_window_pointer/keyboard_get() EAPI
2030 /** @internal */
2031 EAPI Ecore_Wl2_Input *ecore_wl2_window_pointer_get(Ecore_Wl2_Window *win);
2032 /** @internal */
2033 EAPI Ecore_Wl2_Input *ecore_wl2_window_keyboard_get(Ecore_Wl2_Window *win);
2034 //
2035 // TIZEN_ONLY(20171114): support a pointer warp
2036 /** @internal */
2037 EAPI Eina_Bool ecore_wl2_window_pointer_warp(Ecore_Wl2_Window *win, int x, int y);
2038 //
2039 //TIZEN_ONLY(20171115): support output transform
2040 /** @internal */
2041 EAPI Eina_Bool ecore_wl2_window_ignore_output_transform_get(Ecore_Wl2_Window *win);
2042 //
2043 //TIZEN_ONLY(20180810): support client demand move resize
2044 /** @internal */
2045 EAPI void ecore_wl2_window_sync_geometry_set(Ecore_Wl2_Window *window, uint32_t serial, int x, int y, int w, int h);
2046 //
2047
2048 /**
2049  * @internal
2050  *
2051  * Get the wl_seat that an input is using
2052  *
2053  * @param input The Ecore_Wl2_Input to get the seat of
2054  *
2055  * @return The wl_seat of this input, or NULL otherwise
2056  *
2057  * @ingroup Ecore_Wl2_Input_Group
2058  * @since 1.17
2059  */
2060 EAPI struct wl_seat *ecore_wl2_input_seat_get(Ecore_Wl2_Input *input);
2061
2062 /**
2063  * @internal
2064  *
2065  * Get the seat capabilities for a given input.
2066  *
2067  * @param input The input
2068  *
2069  * @ingroup Ecore_Wl2_Input_Group
2070  * @since 1.19
2071  */
2072 EAPI Ecore_Wl2_Seat_Capabilities ecore_wl2_input_seat_capabilities_get(Ecore_Wl2_Input *input);
2073
2074 /**
2075  * @internal
2076  *
2077  * Get the wayland's seat id from an input.
2078  *
2079  * @param input The input
2080  *
2081  * @return The seat id
2082  *
2083  * @ingroup Ecore_Wl2_Input_Group
2084  * @since 1.19
2085  */
2086 EAPI unsigned int ecore_wl2_input_seat_id_get(Ecore_Wl2_Input *input) EINA_WARN_UNUSED_RESULT;
2087
2088 /**
2089  * @internal
2090  *
2091  * Get the display object of an input
2092  *
2093  * @param input The input
2094  *
2095  * @return The display
2096  *
2097  * @ingroup Ecore_Wl2_Input_Group
2098  * @since 1.20
2099  */
2100 EAPI Ecore_Wl2_Display *ecore_wl2_input_display_get(const Ecore_Wl2_Input *input);
2101
2102 /**
2103  * @internal
2104  *
2105  * Get the xkb_keymap object of an input
2106  *
2107  * @param input The input
2108  *
2109  * @return The xkb_keymap object
2110  *
2111  * @ingroup Ecore_Wl2_Input_Group
2112  * @since 1.20
2113  */
2114 EAPI struct xkb_keymap *ecore_wl2_input_keymap_get(const Ecore_Wl2_Input *input);
2115
2116 /**
2117  * @internal
2118  *
2119  * Get the name of an input
2120  *
2121  * @param input The input
2122  *
2123  * @return The name
2124  *
2125  * @ingroup Ecore_Wl2_Input_Group
2126  * @since 1.20
2127  */
2128 EAPI Eina_Stringshare *ecore_wl2_input_name_get(Ecore_Wl2_Input *input);
2129
2130 /**
2131  * @internal
2132  *
2133  * Get the keyboard repeat rate and delay of an input
2134  *
2135  * @param input The input
2136  * @param rate Pointer to store the repeat rate (in seconds)
2137  * @param rate Pointer to store the repeat delay (in seconds)
2138  *
2139  * @return True if repeat is enabled
2140  *
2141  * @ingroup Ecore_Wl2_Input_Group
2142  * @since 1.20
2143  */
2144 EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay);
2145
2146 /**
2147  * @internal
2148  *
2149  * Set the keyboard repeat rate and delay of an input
2150  * @param input The input
2151  * @param rate Pointer to store the repeat rate (in seconds)
2152  * @param rate Pointer to store the repeat delay (in seconds)
2153  * @return True if repeat is enabled
2154  * @ingroup Ecore_Wl2_Input_Group
2155  * @since 1.24
2156  */
2157 EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_set(Ecore_Wl2_Input *input, double rate, double delay);
2158
2159 /**
2160  * @internal
2161  *
2162  * Set a given wl_surface to use as the pointer on a seat
2163  *
2164  * @param input The seat to set this surface as the pointer on
2165  * @param surface The surface to use as the pointer
2166  * @param hot_x The x coordinate to use as the cursor hot spot
2167  * @param hot_y The y coordinate to use as the cursor hot spot
2168  *
2169  * @ingroup Ecore_Wl2_Input_Group
2170  * @since 1.20
2171  */
2172 EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
2173
2174 /**
2175  * @internal
2176  *
2177  * Set a specific cursor on a given input
2178  *
2179  * @brief This function will try to find a matching cursor inside the existing
2180  * cursor theme and set the pointer for the specified seat to be
2181  * the specified cursor
2182  *
2183  * @param input The seat to set the cursor on
2184  * @param cursor The name of the cursor to try and set
2185  *
2186  * @ingroup Ecore_Wl2_Input_Group
2187  * @since 1.20
2188  */
2189 EAPI void ecore_wl2_input_cursor_from_name_set(Ecore_Wl2_Input *input, const char *cursor);
2190
2191 // TIZEN_ONLY(20171207): add functions to set client's custom cursors
2192 /** @internal */
2193 EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
2194 /** @internal */
2195 EAPI struct wl_cursor *ecore_wl2_input_cursor_get(Ecore_Wl2_Input *input, const char *cursor_name);
2196 /** @internal */
2197 EAPI void ecore_wl2_input_cursor_size_set(Ecore_Wl2_Input *input, const int size);
2198 /** @internal */
2199 EAPI void ecore_wl2_input_cursor_theme_name_set(Ecore_Wl2_Input *input, const char *cursor_theme_name);
2200 /** @internal */
2201 EAPI void ecore_wl2_input_cursor_default_restore(Ecore_Wl2_Input *input);
2202 //
2203
2204 /**
2205  * @defgroup Ecore_Wl2_Dnd_Group Wayland Library Drag-n-Drop Functions
2206  * @ingroup Ecore_Wl2_Group
2207  *
2208  * Functions that deal with creating, destroying, or interacting with
2209  * Wayland Drag-n-Drop
2210  */
2211
2212 /**
2213  * @internal
2214  *
2215  * Set the types which are supported by a possible drag and drop operation.
2216  * This call initializes a data source and offeres the given mimetypes
2217  *
2218  * @param input the input where to add on the data source
2219  * @param types a null-terminated array of mimetypes
2220  *
2221  * @ingroup Ecore_Wl2_Dnd_Group
2222  * @since 1.17
2223  */
2224 EAPI void ecore_wl2_dnd_drag_types_set(Ecore_Wl2_Input *input, const char **types);
2225
2226 /**
2227  * @internal
2228  *
2229  * Start a drag on the given input
2230  *
2231  * @param input the input to use
2232  * @param window the window which is the origin of the drag operation
2233  * @param drag_window the window which is used as window of the visible hint.
2234  *
2235  * @return The serial for the start_drag request
2236  *
2237  * @ingroup Ecore_Wl2_Dnd_Group
2238  * @since 1.17
2239  */
2240 EAPI uint32_t ecore_wl2_dnd_drag_start(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, Ecore_Wl2_Window *drag_window);
2241
2242 /**
2243  * @internal
2244  *
2245  * Call wl_data_source.set_actions on an existing source
2246  *
2247  * @param input the input to use
2248  *
2249  * @see ecore_wl2_dnd_drag_start for a more useful function.
2250  *
2251  * @ingroup Ecore_Wl2_Dnd_Group
2252  * @since 1.20
2253  */
2254 EAPI void ecore_wl2_dnd_set_actions(Ecore_Wl2_Input *input);
2255
2256 /**
2257  * @internal
2258  *
2259  * End a drag started by a call to ecore_wl2_dnd_drag_start
2260  *
2261  * @param input the input object on which the drag was started
2262  *
2263  * @ingroup Ecore_Wl2_Dnd_Group
2264  * @since 1.17
2265  */
2266 EAPI void ecore_wl2_dnd_drag_end(Ecore_Wl2_Input *input);
2267
2268 /**
2269  * @internal
2270  *
2271  * Get the offer which is currently resposible for the clipboard
2272  *
2273  * @param input the input object to use
2274  *
2275  * @ingroup Ecore_Wl2_Dnd_Group
2276  * @since 1.19
2277  */
2278 EAPI Ecore_Wl2_Offer* ecore_wl2_dnd_selection_get(Ecore_Wl2_Input *input);
2279
2280 /**
2281  * @internal
2282  *
2283  * Set the types which are available from this client
2284  * Later the event ECORE_WL2_EVENT_DATA_SOURCE_SEND is emitted,
2285  * where the caller of this api must write the data (encoded in the given mimetype) to the fd
2286  *
2287  * @param input the input to provice this types on
2288  * @param types a null-terminated array of mimetypes supported by the client
2289  *
2290  * @return serial of request on success, 0 on failure
2291  *
2292  * @ingroup Ecore_Wl2_Dnd_Group
2293  * @since 1.17
2294  */
2295 EAPI uint32_t ecore_wl2_dnd_selection_set(Ecore_Wl2_Input *input, const char **types);
2296
2297 /**
2298  * @internal
2299  *
2300  * Clear the selection currently setted on this input.
2301  *
2302  * @param input the input to clear
2303  *
2304  * @return serial of request on success, 0 on failure
2305  *
2306  * @ingroup Ecore_Wl2_Dnd_Group
2307  * @since 1.17
2308  */
2309 EAPI uint32_t ecore_wl2_dnd_selection_clear(Ecore_Wl2_Input *input);
2310
2311 // TIZEN_ONLY(20211018): added ecore_wl2_offer functions to ecore_wl2
2312 /**
2313  * @internal
2314  *
2315  * Get the actions available from the data source
2316  *
2317  * @param offer Offer object to use
2318  *
2319  * @return orĀ“ed values from Ecore_Wl2_Drag_Action which are describing the available actions
2320  *
2321  * @ingroup Ecore_Wl2_Dnd_Group
2322  * @since 1.19
2323  */
2324 EAPI Ecore_Wl2_Drag_Action ecore_wl2_offer_actions_get(Ecore_Wl2_Offer *offer);
2325
2326 /**
2327  * @internal
2328  *
2329  * Set the actions which are supported by you
2330  *
2331  * @param offer Offer object to use
2332  * @param actions A orĀ“ed value of mutliple Ecore_Wl2_Drag_Action values
2333  * @param action the preferred action out of the actions
2334  *
2335  * @ingroup Ecore_Wl2_Dnd_Group
2336  * @since 1.19
2337  */
2338 EAPI void ecore_wl2_offer_actions_set(Ecore_Wl2_Offer *offer, Ecore_Wl2_Drag_Action actions, Ecore_Wl2_Drag_Action action);
2339
2340 /**
2341  * @internal
2342  *
2343  * Get action which is set by either the data source or in the last call of actions_set
2344  *
2345  * @param offer Offer object to use
2346  *
2347  * @return the preferred action
2348  *
2349  * @ingroup Ecore_Wl2_Dnd_Group
2350  * @since 1.19
2351  */
2352 EAPI Ecore_Wl2_Drag_Action ecore_wl2_offer_action_get(Ecore_Wl2_Offer *offer);
2353
2354 /**
2355  * @internal
2356  *
2357  * Get the mime types which are given by the source
2358  *
2359  * @param offer the offer to query
2360  *
2361  * @return a eina array of strdupĀ“ed strings, this array must NOT be changed or freed
2362  *
2363  * @ingroup Ecore_Wl2_Dnd_Group
2364  * @since 1.19
2365  */
2366 EAPI Eina_Array* ecore_wl2_offer_mimes_get(Ecore_Wl2_Offer *offer);
2367
2368 /**
2369  * @internal
2370  *
2371  * Set mimetypes you are accepting under this offer
2372  *
2373  * @param offer the offer to use
2374  *
2375  * @ingroup Ecore_Wl2_Dnd_Group
2376  * @since 1.19
2377  */
2378 EAPI void ecore_wl2_offer_mimes_set(Ecore_Wl2_Offer *offer, Eina_Array *mimes);
2379
2380 /**
2381  * @internal
2382  *
2383  * Accept a single mime type for an offer
2384  *
2385  * @param offer the offer to use
2386  * @param mime_type the mime type
2387  *
2388  * @ingroup Ecore_Wl2_Dnd_Group
2389  * @since 1.20
2390  */
2391 EAPI void ecore_wl2_offer_accept(Ecore_Wl2_Offer *offer, const char *mime_type);
2392
2393 /**
2394  * @internal
2395  *
2396  * Request the data from this offer.
2397  * The event ECORE_WL2_EVENT_OFFER_DATA_READY is called when the data is available.
2398  * There offer will be not destroyed as long as requested data is not emitted by the event.
2399  *
2400  * @param offer the offer to use
2401  * @param mime the mimetype to receive
2402  *
2403  * @ingroup Ecore_Wl2_Dnd_Group
2404  * @since 1.19
2405  */
2406 EAPI void ecore_wl2_offer_receive(Ecore_Wl2_Offer *offer, char *mime);
2407
2408 /**
2409  * @internal
2410  *
2411  * Request the data from this offer on an externally managed fd.
2412  * The event ECORE_WL2_EVENT_OFFER_DATA_READY is called when the data is available.
2413  * There offer will be not destroyed as long as requested data is not emitted by the event.
2414  *
2415  * @param offer the offer to use
2416  * @param mime the mimetype to receive
2417  * @param fd the fd to pass for receiving
2418  *
2419  * @ingroup Ecore_Wl2_Dnd_Group
2420  * @since 1.20
2421  */
2422 EAPI void ecore_wl2_offer_proxy_receive(Ecore_Wl2_Offer *offer, const char *mime, int fd);
2423
2424 /**
2425  * @internal
2426  *
2427  * End the use of a proxy received offer. This may invalidate the offer object
2428  *
2429  * @param offer the offer
2430  *
2431  * @ingroup Ecore_Wl2_Dnd_Group
2432  * @since 1.20
2433  */
2434 EAPI void ecore_wl2_offer_proxy_receive_end(Ecore_Wl2_Offer *offer);
2435
2436 /**
2437  * @internal
2438  *
2439  * Check if the given offer supports the given mimetype
2440  *
2441  * @param offer the offer to use
2442  * @param mime the mimetype to check
2443  *
2444  * @return Returns true if the mimetype is supported by this offer, false if not
2445  *
2446  * @ingroup Ecore_Wl2_Dnd_Group
2447  * @since 1.19
2448  */
2449 EAPI Eina_Bool ecore_wl2_offer_supports_mime(Ecore_Wl2_Offer *offer, const char *mime);
2450
2451 /**
2452  * @internal
2453  *
2454  * Mark this offer as finished
2455  * This will call the dnd_finished event on the source of the sender.
2456  *
2457  * @param offer the offer to use
2458  *
2459  * @ingroup Ecore_Wl2_Dnd_Group
2460  * @since 1.19
2461  */
2462 EAPI void ecore_wl2_offer_finish(Ecore_Wl2_Offer *offer);
2463 //
2464
2465 /**
2466  * @defgroup Ecore_Wl2_Output_Group Wayland Library Output Functions
2467  * @ingroup Ecore_Wl2_Group
2468  *
2469  * Functions that deal with creating, destroying, or interacting with
2470  * Wayland Outputs
2471  */
2472
2473 /**
2474  * @internal
2475  *
2476  * Return the DPI of a given output
2477  *
2478  * This is a simplistic call to get DPI. It does not account for differing
2479  * DPI in the x and y axes nor does it account for multihead or xinerama and
2480  * xrandr where different parts of the screen may have different DPI etc.
2481  *
2482  * @param output The output to get the DPI of
2483  *
2484  * @return the general screen DPI (dots/pixels per inch).
2485  *
2486  * @ingroup Ecore_Wl2_Output_Group
2487  * @since 1.17
2488  */
2489 EAPI int ecore_wl2_output_dpi_get(Ecore_Wl2_Output *output);
2490
2491 /**
2492  * @internal
2493  *
2494  * Get the current transform of a given output
2495  *
2496  * @param output The output to get the transform of
2497  *
2498  * @return The output's current transform value
2499  *
2500  * @ingroup Ecore_Wl2_Output_Group
2501  * @since 1.20
2502  */
2503 EAPI int ecore_wl2_output_transform_get(Ecore_Wl2_Output *output);
2504
2505 /**
2506  * @internal
2507  *
2508  * Disable session recovery for any further connections.  Must be called
2509  * before connecting.  This is irreversible and not intended for general
2510  * use.
2511  *
2512  * @since 1.19
2513  */
2514 EAPI void ecore_wl2_session_recovery_disable(void);
2515
2516 /* TODO: doxygen if we are keeping any of the below functions public */
2517 /** @internal */
2518 EAPI Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
2519
2520 // TIZEN_ONLY(20171107): support a tizen_keyrouter interface
2521 EAPI void ecore_wl2_display_sync(Ecore_Wl2_Display *display);
2522 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);
2523 EAPI Eina_Bool ecore_wl2_window_keygrab_unset(Ecore_Wl2_Window *win, const char *key, int mod EINA_UNUSED, int any_mod EINA_UNUSED);
2524 //
2525 EAPI Eina_List *ecore_wl2_window_keygrab_list_set(Ecore_Wl2_Window *win, Eina_List *infos);
2526 EAPI Eina_List *ecore_wl2_window_keygrab_list_unset(Ecore_Wl2_Window *win, Eina_List *infos);
2527
2528 // TIZEN_ONLY(20171107): add ecore_wl2_window_input_get() EAPI
2529 EAPI Ecore_Wl2_Input *ecore_wl2_window_input_get(Ecore_Wl2_Window *win);
2530 //
2531 // TIZEN_ONLY(20200326): add ecore_wl2_window_pointer/keyboard_get() EAPI
2532 /** @internal */
2533 EAPI Ecore_Wl2_Input *ecore_wl2_window_pointer_get(Ecore_Wl2_Window *win);
2534 /** @internal */
2535 EAPI Ecore_Wl2_Input *ecore_wl2_window_keyboard_get(Ecore_Wl2_Window *win);
2536 //
2537 // TIZEN_ONLY(20171114): support a pointer warp
2538 EAPI Eina_Bool ecore_wl2_window_pointer_warp(Ecore_Wl2_Window *win, int x, int y);
2539 //
2540 // TIZEN_ONLY(20200601): support sync between ui and video
2541
2542 //TIZEN_ONLY(20171108): add a new API to ecore_wl2_sync
2543 /** @internal */
2544 EAPI void ecore_wl2_sync(void);
2545 //
2546
2547 //TIZEN_ONLY(20220322): add resource id to window attribute
2548 /** @internal */
2549 EAPI unsigned int ecore_wl2_window_resource_id_get(Ecore_Wl2_Window *window);
2550 //
2551
2552 // TIZEN_ONLY(20221208): support default cursor configuration
2553 EAPI void ecore_wl2_cursor_config_name_set(const char *name);
2554 //
2555
2556 //TIZEN_ONLY(20221228): add resize request set for ignoring configure event
2557 EAPI void ecore_wl2_window_resize_request_set(Ecore_Wl2_Window *window, int w, int h);
2558 //
2559 //TIZEN_ONLY(20230220): unset pending resize request
2560 EAPI void ecore_wl2_window_resize_request_unset(Ecore_Wl2_Window *window);
2561 //
2562
2563 //TIZEN_ONLY(20230306): support pin mode
2564 EAPI void ecore_wl2_window_pin_mode_set(Ecore_Wl2_Window *window, Eina_Bool pinned);
2565 EAPI Eina_Bool ecore_wl2_window_pin_mode_get(Ecore_Wl2_Window *window);
2566 //
2567
2568 # undef EAPI
2569 # define EAPI
2570
2571 # ifdef __cplusplus
2572 }
2573 # endif
2574
2575 #endif