ecore_wl2: add keyboard_grab/ungrab API
[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 /** @internal */
1333 EAPI Eina_Bool
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);
1335 //
1336
1337 /**
1338  * @internal
1339  *
1340  * Get if a given window is fullscreen
1341  *
1342  * @param window The window to get the fullscreen state of
1343  *
1344  * @return EINA_TRUE if window is fullscreen, EINA_FALSE otherwise
1345  *
1346  * @ingroup Ecore_Wl2_Window_Group
1347  * @since 1.17
1348  */
1349 EAPI Eina_Bool ecore_wl2_window_fullscreen_get(Ecore_Wl2_Window *window);
1350
1351 /**
1352  * @internal
1353  *
1354  * Set the fullscreen state of a given window
1355  *
1356  * @param window The window to set the fullscreen state of
1357  * @param fullscreen EINA_TRUE to set fullscreen, EINA_FALSE to unset
1358  *
1359  * @ingroup Ecore_Wl2_Window_Group
1360  * @since 1.17
1361  */
1362 EAPI void ecore_wl2_window_fullscreen_set(Ecore_Wl2_Window *window, Eina_Bool fullscreen);
1363
1364 /**
1365  * @internal
1366  *
1367  * Get if a given window is rotated
1368  *
1369  * @param window The window to get the rotation of
1370  *
1371  * @return The amount of rotation for this window, or -1 on failure
1372  *
1373  * @ingroup Ecore_Wl2_Window_Group
1374  * @since 1.17
1375  */
1376 EAPI int ecore_wl2_window_rotation_get(Ecore_Wl2_Window *window);
1377
1378 /**
1379  * @internal
1380  *
1381  * Set the rotation of a given window
1382  *
1383  * @param window The window to set the rotation of
1384  * @param rotation The amount of rotation
1385  *
1386  * @ingroup Ecore_Wl2_Window_Group
1387  * @since 1.17
1388  */
1389 EAPI void ecore_wl2_window_rotation_set(Ecore_Wl2_Window *window, int rotation);
1390
1391 /**
1392  * @internal
1393  *
1394  * Set the class of a given window
1395  *
1396  * @param window The window to set the class of
1397  * @param clas The class of the window
1398  *
1399  * @ingroup Ecore_Wl2_Window_Group
1400  * @since 1.17
1401  */
1402 EAPI void ecore_wl2_window_class_set(Ecore_Wl2_Window *window, const char *clas);
1403
1404 /**
1405  * @internal
1406  *
1407  * Get the class of a given window
1408  *
1409  * @param window The window to set the class of
1410  *
1411  * @return A string if found, or NULL otherwise
1412  *
1413  * @ingroup Ecore_Wl2_Window_Group
1414  * @since 1.24
1415  */
1416 EAPI const char *ecore_wl2_window_class_get(Ecore_Wl2_Window *window);
1417
1418 /**
1419  * @internal
1420  *
1421  * Get the geometry of a given window
1422  *
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.
1426  *
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
1432  *
1433  * @ingroup Ecore_Wl2_Window_Group
1434  * @since 1.17
1435  */
1436 EAPI void ecore_wl2_window_geometry_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h);
1437
1438 /**
1439  * @internal
1440  *
1441  * Set the geometry of a given window
1442  *
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.
1446  *
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
1452  *
1453  * @ingroup Ecore_Wl2_Window_Group
1454  * @since 1.17
1455  */
1456 EAPI void ecore_wl2_window_geometry_set(Ecore_Wl2_Window *window, int x, int y, int w, int h);
1457
1458 //TIZEN_ONLY(20220325): added min / max size set to window
1459 /**
1460  * @internal
1461  *
1462  * Set the minimum size of a given window
1463  *
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
1467  *
1468  * @ingroup Ecore_Wl2_Window_Group
1469  * @since 1.17
1470  */
1471 EAPI void ecore_wl2_window_minimum_size_set(Ecore_Wl2_Window *window, int w, int h);
1472
1473 /**
1474  * @internal
1475  *
1476  * Set the maximum size of a given window
1477  *
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
1481  *
1482  * @ingroup Ecore_Wl2_Window_Group
1483  * @since 1.17
1484  */
1485 EAPI void ecore_wl2_window_maximum_size_set(Ecore_Wl2_Window *window, int w, int h);
1486 //
1487
1488 /**
1489  * @internal
1490  *
1491  * Get the iconified state of a given window
1492  *
1493  * @param window The window to get the iconified state of
1494  *
1495  * @return EINA_TRUE if window is iconified, EINA_FALSE otherwise
1496  *
1497  * @ingroup Ecore_Wl2_Window_Group
1498  * @since 1.17
1499  */
1500 EAPI Eina_Bool ecore_wl2_window_iconified_get(Ecore_Wl2_Window *window);
1501
1502 /**
1503  * @internal
1504  *
1505  * Iconify a window
1506  *
1507  * @param win The window to iconifiy
1508  * @param iconified The new iconified state to set
1509  *
1510  * @ingroup Ecore_Wl2_Window_Group
1511  * @since 1.17
1512  */
1513 EAPI void ecore_wl2_window_iconified_set(Ecore_Wl2_Window *window, Eina_Bool iconified);
1514
1515 // TIZEN_ONLY(20151231) : handling iconic state on tizen
1516 /** @internal */
1517 EAPI void ecore_wl2_window_iconify_state_update(Ecore_Wl2_Window *window, Eina_Bool iconified, Eina_Bool send_event);
1518 //
1519
1520 /**
1521  * @internal
1522  *
1523  * Set the type of a given window
1524  *
1525  * @param window The window to set the type of
1526  * @param type The Ecore_Wl2_Window_Type to set on the window
1527  *
1528  * @ingroup Ecore_Wl2_Window_Group
1529  * @since 1.17
1530  */
1531 EAPI void ecore_wl2_window_type_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Type type);
1532
1533 /**
1534  * @internal
1535  *
1536  * Get the type of a given window
1537  *
1538  * @see Ecore_Wl2_Window_Type
1539  *
1540  * @ingroup Ecore_Wl2_Window_Group
1541  * @since 1.24
1542  */
1543 EAPI Ecore_Wl2_Window_Type ecore_wl2_window_type_get(Ecore_Wl2_Window *window);
1544
1545 /**
1546  * @internal
1547  *
1548  * Find the output that a given window is on
1549  *
1550  * @param window The window to find the output for
1551  *
1552  * @return An Ecore_Wl2_Output if found, or NULL otherwise
1553  *
1554  * @ingroup Ecore_Wl2_Window_Group
1555  * @since 1.20
1556  */
1557 EAPI Ecore_Wl2_Output *ecore_wl2_window_output_find(Ecore_Wl2_Window *window);
1558
1559 /**
1560  * @internal
1561  *
1562  * Set if window rotation is supported by the window manager
1563  *
1564  * @param window
1565  * @param enabled
1566  *
1567  * @ingroup Ecore_Wl2_Window_Group
1568  * @since 1.20
1569  */
1570 EAPI void ecore_wl2_window_wm_rotation_supported_set(Ecore_Wl2_Window *window, Eina_Bool enabled);
1571
1572 /**
1573  * @internal
1574  *
1575  * Get if window rotation is supported by the window manager
1576  *
1577  * @param window
1578  *
1579  * @return EINA_TRUE if supported, EINA_FALSE otherwise
1580  *
1581  * @ingroup Ecore_Wl2_Window_Group
1582  * @since 1.20
1583  */
1584 EAPI Eina_Bool ecore_wl2_window_wm_rotation_supported_get(Ecore_Wl2_Window *window);
1585
1586 /**
1587  * @internal
1588  *
1589  * Set if an application has set window rotation
1590  *
1591  * @param window
1592  * @param set
1593  *
1594  * @ingroup Ecore_Wl2_Window_Group
1595  * @since 1.20
1596  */
1597 EAPI void ecore_wl2_window_rotation_app_set(Ecore_Wl2_Window *window, Eina_Bool set);
1598
1599 /**
1600  * @internal
1601  *
1602  * Get if an application has set window rotation
1603  *
1604  * @param window
1605  *
1606  * @return EINA_TRUE if set, EINA_FALSE otherwise
1607  *
1608  * @ingroup Ecore_Wl2_Window_Group
1609  * @since 1.20
1610  */
1611 EAPI Eina_Bool ecore_wl2_window_rotation_app_get(Ecore_Wl2_Window *window);
1612
1613 /**
1614  * @internal
1615  *
1616  * Set preferred rotation on a given window
1617  *
1618  * @param window The window to set preferred rotation on
1619  * @param rot The value of the preferred rotation to set
1620  *
1621  * @ingroup Ecore_Wl2_Window_Group
1622  * @since 1.20
1623  */
1624 EAPI void ecore_wl2_window_preferred_rotation_set(Ecore_Wl2_Window *window, int rot);
1625
1626 /**
1627  * @internal
1628  *
1629  * Get preferred rotation for a given window
1630  *
1631  * @param window The window to get preferred rotation from
1632  *
1633  * @return Given windows preferred rotation
1634  *
1635  * @ingroup Ecore_Wl2_Window
1636  * @since 1.20
1637  */
1638 EAPI int ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window *window);
1639
1640 /**
1641  * @internal
1642  *
1643  * Set a windows available rotations
1644  *
1645  * @param window
1646  * @param rots
1647  * @param count
1648  *
1649  * @ingroup Ecore_Wl2_Window_Group
1650  * @since 1.20
1651  */
1652 EAPI void ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, const int *rots, unsigned int count);
1653
1654 /**
1655  * @internal
1656  *
1657  * Get a windows available rotations
1658  *
1659  * @param window
1660  * @param rots
1661  * @param count
1662  *
1663  * @return EINA_TRUE on success, EINA_FALSE otherwise
1664  *
1665  * @ingroup Ecore_Wl2_Window_Group
1666  * @since 1.20
1667  */
1668 EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, unsigned int *count);
1669 /** @internal */
1670 EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot, int w, int h, Eina_Bool resize);
1671 /** @internal */
1672 EAPI void ecore_wl2_window_rotation_change_prepare_done_send(Ecore_Wl2_Window *window, int rot);
1673 /** @internal */
1674 EAPI void ecore_wl2_window_rotation_change_request_send(Ecore_Wl2_Window *window, int rot);
1675 /** @internal */
1676 EAPI void ecore_wl2_window_rotation_change_done_send(Ecore_Wl2_Window *window, int rot, int w, int h);
1677 // TIZEN_ONLY
1678 /** @internal */
1679 EAPI void ecore_wl2_window_rotation_geometry_set(Ecore_Wl2_Window *win, int rot, int x, int y, int w, int h);
1680 /** @internal */
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));
1682 //
1683
1684 // TIZEN_ONLY(20210330): support aux_hint generate
1685 /**
1686  * @internal
1687  *
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.
1692  *
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
1696  *
1697  * @return Hint ID on success, -1 on failure
1698  *
1699  * @ingroup Ecore_Wl2_Window_Group
1700  */
1701 EAPI int ecore_wl2_window_aux_hint_generate(Ecore_Wl2_Window *win, const char *hint, const char *val);
1702
1703 /**
1704  * @internal
1705  *
1706  * Get the hint ID of a given window
1707  *
1708  * @param win The window to get auxiliary hint ID
1709  * @param hint The name of hint to get ID
1710  *
1711  * @return Hint ID on success, -1 on failure
1712  *
1713  * @ingroup Ecore_Wl2_Window_Group
1714  */
1715 EAPI int ecore_wl2_window_aux_hint_id_get(Ecore_Wl2_Window *win, const char *hint);
1716
1717 /**
1718  * @internal
1719  *
1720  * Get the hint value of a given window
1721  *
1722  * @param win The window to get auxiliary hint value
1723  * @param id The ID of hint to get hint value
1724  *
1725  * @return Hint value on success, NULL on failure
1726  *
1727  * @ingroup Ecore_Wl2_Window_Group
1728  */
1729 EAPI const char *ecore_wl2_window_aux_hint_value_get(Ecore_Wl2_Window *win, int id);
1730 // END OF TIZEN_ONLY
1731
1732 /**
1733  * @internal
1734  *
1735  * Get list of supported auxiliary window hints
1736  *
1737  * @param window
1738  *
1739  * @return An Eina_List of supported auxiliary hints, or NULL otherwise
1740  *
1741  * @ingroup Ecore_Wl2_Window_Group
1742  * @since 1.20
1743  */
1744 EAPI Eina_List *ecore_wl2_window_aux_hints_supported_get(Ecore_Wl2_Window *window);
1745
1746 /**
1747  * @internal
1748  *
1749  * Add a supported auxiliary hint to a given window
1750  *
1751  * @param window
1752  * @param id
1753  * @param hint
1754  * @param val
1755  *
1756  * @ingroup Ecore_Wl2_Window_Group
1757  * @since 1.20
1758  */
1759 EAPI void ecore_wl2_window_aux_hint_add(Ecore_Wl2_Window *window, int id, const char *hint, const char *val);
1760
1761 /**
1762  * @internal
1763  *
1764  * Change an auxiliary hint on a given window
1765  *
1766  * @param window
1767  * @param id
1768  * @param val
1769  *
1770  * @ingroup Ecore_Wl2_Window_Group
1771  * @since 1.20
1772  */
1773 EAPI void ecore_wl2_window_aux_hint_change(Ecore_Wl2_Window *window, int id, const char *val);
1774
1775 /**
1776  * @internal
1777  *
1778  * Delete an auxiliary hint on a given window
1779  *
1780  * @param window
1781  * @param id
1782  *
1783  * @ingroup Ecore_Wl2_Window_Group
1784  * @since 1.20
1785  */
1786 EAPI void ecore_wl2_window_aux_hint_del(Ecore_Wl2_Window *window, int id);
1787
1788 /**
1789  * @internal
1790  *
1791  * @brief Get the activated state of a window
1792  *
1793  * @param window The window to get activated state from
1794  *
1795  * @return @c EINA_TRUE if activated
1796  *
1797  * @ingroup Ecore_Wl2_Window_Group
1798  * @since 1.20
1799  */
1800 EAPI Eina_Bool ecore_wl2_window_activated_get(const Ecore_Wl2_Window *window);
1801
1802 /**
1803  * @internal
1804  *
1805  * @brief Set the seat for a popup window to be used with grab
1806  *
1807  * @param window The window
1808  * @param input The seat
1809  *
1810  * Use this function for desktop shell requests involving popup grabs which require
1811  * a seat for the grab.
1812  *
1813  * @ingroup Ecore_Wl2_Window_Group
1814  * @since 1.20
1815  */
1816 EAPI void ecore_wl2_window_popup_input_set(Ecore_Wl2_Window *window, Ecore_Wl2_Input *input);
1817
1818 /**
1819  * @internal
1820  *
1821  * @brief Get the seat for a popup window to be used with grab
1822  *
1823  * @param window The window
1824  *
1825  * @return Returns Ecore_Wl2_Input if the window has an input.
1826  *
1827  * @ingroup Ecore_Wl2_Window_Group
1828  * @since 1.24
1829  */
1830 EAPI Ecore_Wl2_Input *ecore_wl2_window_popup_input_get(Ecore_Wl2_Window *window);
1831
1832 /**
1833  * @internal
1834  *
1835  * Check if a window has a shell surface - without one it can't be visible.
1836  *
1837  * @param win The window to check
1838  *
1839  * @return Returns true if the window has an associated shell surface.
1840  *
1841  * @ingroup Ecore_Wl2_Window_Group
1842  * @since 1.19
1843  */
1844 EAPI Eina_Bool ecore_wl2_window_shell_surface_exists(Ecore_Wl2_Window *win);
1845
1846 // TIZEN_ONLY(171108) : get shell surface of a given window
1847 /** @internal */
1848 EAPI struct zxdg_surface_v6 *ecore_wl2_window_shell_surface_get(Ecore_Wl2_Window *window);
1849 //
1850
1851 /**
1852  * @internal
1853  *
1854  * Set the role of a given window
1855  *
1856  * @param window
1857  * @param role
1858  *
1859  * @ingroup Ecore_Wl2_Window_Group
1860  * @since 1.20
1861  */
1862 EAPI void ecore_wl2_window_role_set(Ecore_Wl2_Window *window, const char *role);
1863
1864 /**
1865  * @internal
1866  *
1867  * Get the role of a given window
1868  *
1869  * @param window The window to set the class role
1870  *
1871  * @return A string if found, or NULL otherwise
1872  *
1873  * @ingroup Ecore_Wl2_Window_Group
1874  * @since 1.24
1875  */
1876 EAPI const char *ecore_wl2_window_role_get(Ecore_Wl2_Window *window);
1877
1878 /**
1879  * @internal
1880  *
1881  * Set if a given window is in floating mode
1882  *
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
1885  *
1886  * @ingroup Ecore_Wl2_Window_Group
1887  * @since 1.20
1888  */
1889 EAPI void ecore_wl2_window_floating_mode_set(Ecore_Wl2_Window *window, Eina_Bool floating);
1890
1891 /**
1892  * @internal
1893  *
1894  * Get if a given window is in floating mode
1895  *
1896  * @param window The window to get floating mode
1897  *
1898  * @return EINA_TRUE if floating, EINA_FALSE otherwise
1899  *
1900  * @ingroup Ecore_Wl2_Window_Group
1901  * @since 1.20
1902  */
1903 EAPI Eina_Bool ecore_wl2_window_floating_mode_get(Ecore_Wl2_Window *window);
1904
1905 /**
1906  * @internal
1907  *
1908  * Finds a window by surface
1909  *
1910  * @param surface The surface to find the window of
1911  *
1912  * @ingroup Ecore_Wl2_Window_Group
1913  * @since 1.24
1914  */
1915 EAPI Ecore_Wl2_Window *ecore_wl2_window_surface_find(struct wl_surface *surface);
1916
1917 /*
1918  * @internal
1919  *
1920  * Check if a wayland window's surface is in the pending state.
1921  *
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.
1924  *
1925  * @param window The window whose surface we want to check
1926  *
1927  * @return whether the window's surface is pending or not.
1928  *
1929  * @since 1.21
1930  */
1931 EAPI Eina_Bool ecore_wl2_window_pending_get(Ecore_Wl2_Window *window);
1932
1933 /**
1934  * @internal
1935  *
1936  * Get if a given window is resizing
1937  *
1938  * @param window The window to check for resizing
1939  *
1940  * @return EINA_TRUE if resizing, EINA_FALSE otherwise
1941  *
1942  * @ingroup Ecore_Wl2_Window_Group
1943  * @since 1.21
1944  */
1945 EAPI Eina_Bool ecore_wl2_window_resizing_get(Ecore_Wl2_Window *window);
1946
1947 /**
1948  * @internal
1949  *
1950  * Latch window state at the start of an update
1951  *
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.
1955  *
1956  * Events deferred during an update will automatically fire
1957  * immediately after the caller calls ecore_wl2_window_commit.
1958  *
1959  * @param window The window whose state we want to latch
1960  *
1961  * @since 1.21
1962  */
1963 EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window);
1964
1965 // TIZEN_ONLY(20171207): add functions to set client's custom cursors
1966 /** @internal */
1967 EAPI void ecore_wl2_window_pointer_set(Ecore_Wl2_Window *win, struct wl_surface *surface, int hot_x, int hot_y);
1968 /** @internal */
1969 EAPI void ecore_wl2_window_cursor_from_name_set(Ecore_Wl2_Window *win, const char *cursor_name);
1970 /** @internal */
1971 EAPI void ecore_wl2_window_cursor_default_restore(Ecore_Wl2_Window *win);
1972 //
1973 // TIZEN_ONLY(20150703) : support conformant
1974 /** @internal */
1975 EAPI void ecore_wl2_window_conformant_set(Ecore_Wl2_Window *win, unsigned int is_conformant);
1976 /** @internal */
1977 EAPI Eina_Bool ecore_wl2_window_conformant_get(Ecore_Wl2_Window *win);
1978 //
1979
1980 // TIZEN_ONLY(20171108) : add functions for indicator
1981 /** @internal */
1982 EAPI void ecore_wl2_window_indicator_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
1983 /** @internal */
1984 EAPI Eina_Bool ecore_wl2_window_indicator_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
1985 /** @internal */
1986 EAPI void ecore_wl2_window_indicator_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_State state);
1987 /** @internal */
1988 EAPI Ecore_Wl2_Indicator_State ecore_wl2_window_indicator_state_get(Ecore_Wl2_Window *win);
1989 /** @internal */
1990 EAPI void ecore_wl2_window_indicator_opacity_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Opacity_Mode mode);
1991 /** @internal */
1992 EAPI Ecore_Wl2_Indicator_Opacity_Mode ecore_wl2_window_indicator_opacity_get(Ecore_Wl2_Window *win);
1993 /** @internal */
1994 EAPI void ecore_wl2_indicator_visible_type_set(Ecore_Wl2_Window *win, Ecore_Wl2_Indicator_Visible_Type type);
1995 /** @internal */
1996 EAPI Ecore_Wl2_Indicator_Visible_Type ecore_wl2_indicator_visible_type_get(Ecore_Wl2_Window *win);
1997 //
1998
1999 // TIZEN_ONLY(20171108) : add functions for clipboard
2000 /** @internal */
2001 EAPI void ecore_wl2_window_clipboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
2002 /** @internal */
2003 EAPI Eina_Bool ecore_wl2_window_clipboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
2004 /** @internal */
2005 EAPI void ecore_wl2_window_clipboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Clipboard_State state);
2006 /** @internal */
2007 EAPI Ecore_Wl2_Clipboard_State ecore_wl2_window_clipboard_state_get(Ecore_Wl2_Window *win);
2008 /** @internal */
2009 EAPI void ecore_wl2_clipboard_show(Ecore_Wl2_Window *win);
2010 /** @internal */
2011 EAPI void ecore_wl2_clipboard_hide(Ecore_Wl2_Window *win);
2012 /** @internal */
2013 EAPI Eina_Bool ecore_wl2_clipboard_data_only_set(Eina_Bool data_only);
2014 //
2015
2016 // TIZEN_ONLY(20171108) : add functions for keyboard
2017 /** @internal */
2018 EAPI void ecore_wl2_window_keyboard_geometry_set(Ecore_Wl2_Window *win, int x, int y, int w, int h);
2019 /** @internal */
2020 EAPI Eina_Bool ecore_wl2_window_keyboard_geometry_get(Ecore_Wl2_Window *win, int *x, int *y, int *w, int *h);
2021 /** @internal */
2022 EAPI void ecore_wl2_window_keyboard_state_set(Ecore_Wl2_Window *win, Ecore_Wl2_Virtual_Keyboard_State state);
2023 /** @internal */
2024 EAPI Ecore_Wl2_Virtual_Keyboard_State ecore_wl2_window_keyboard_state_get(Ecore_Wl2_Window *win);
2025 //
2026 // TIZEN_ONLY(20171107): add ecore_wl2_window_input_get() EAPI
2027 /** @internal */
2028 EAPI Ecore_Wl2_Input *ecore_wl2_window_input_get(Ecore_Wl2_Window *win);
2029 //
2030 // TIZEN_ONLY(20200326): add ecore_wl2_window_pointer/keyboard_get() EAPI
2031 /** @internal */
2032 EAPI Ecore_Wl2_Input *ecore_wl2_window_pointer_get(Ecore_Wl2_Window *win);
2033 /** @internal */
2034 EAPI Ecore_Wl2_Input *ecore_wl2_window_keyboard_get(Ecore_Wl2_Window *win);
2035 //
2036 // TIZEN_ONLY(20171114): support a pointer warp
2037 /** @internal */
2038 EAPI Eina_Bool ecore_wl2_window_pointer_warp(Ecore_Wl2_Window *win, int x, int y);
2039 //
2040 //TIZEN_ONLY(20171115): support output transform
2041 /** @internal */
2042 EAPI Eina_Bool ecore_wl2_window_ignore_output_transform_get(Ecore_Wl2_Window *win);
2043 //
2044 //TIZEN_ONLY(20180810): support client demand move resize
2045 /** @internal */
2046 EAPI void ecore_wl2_window_sync_geometry_set(Ecore_Wl2_Window *window, uint32_t serial, int x, int y, int w, int h);
2047 //
2048
2049 /**
2050  * @internal
2051  *
2052  * Get the wl_seat that an input is using
2053  *
2054  * @param input The Ecore_Wl2_Input to get the seat of
2055  *
2056  * @return The wl_seat of this input, or NULL otherwise
2057  *
2058  * @ingroup Ecore_Wl2_Input_Group
2059  * @since 1.17
2060  */
2061 EAPI struct wl_seat *ecore_wl2_input_seat_get(Ecore_Wl2_Input *input);
2062
2063 /**
2064  * @internal
2065  *
2066  * Get the seat capabilities for a given input.
2067  *
2068  * @param input The input
2069  *
2070  * @ingroup Ecore_Wl2_Input_Group
2071  * @since 1.19
2072  */
2073 EAPI Ecore_Wl2_Seat_Capabilities ecore_wl2_input_seat_capabilities_get(Ecore_Wl2_Input *input);
2074
2075 /**
2076  * @internal
2077  *
2078  * Get the wayland's seat id from an input.
2079  *
2080  * @param input The input
2081  *
2082  * @return The seat id
2083  *
2084  * @ingroup Ecore_Wl2_Input_Group
2085  * @since 1.19
2086  */
2087 EAPI unsigned int ecore_wl2_input_seat_id_get(Ecore_Wl2_Input *input) EINA_WARN_UNUSED_RESULT;
2088
2089 /**
2090  * @internal
2091  *
2092  * Get the display object of an input
2093  *
2094  * @param input The input
2095  *
2096  * @return The display
2097  *
2098  * @ingroup Ecore_Wl2_Input_Group
2099  * @since 1.20
2100  */
2101 EAPI Ecore_Wl2_Display *ecore_wl2_input_display_get(const Ecore_Wl2_Input *input);
2102
2103 /**
2104  * @internal
2105  *
2106  * Get the xkb_keymap object of an input
2107  *
2108  * @param input The input
2109  *
2110  * @return The xkb_keymap object
2111  *
2112  * @ingroup Ecore_Wl2_Input_Group
2113  * @since 1.20
2114  */
2115 EAPI struct xkb_keymap *ecore_wl2_input_keymap_get(const Ecore_Wl2_Input *input);
2116
2117 /**
2118  * @internal
2119  *
2120  * Get the name of an input
2121  *
2122  * @param input The input
2123  *
2124  * @return The name
2125  *
2126  * @ingroup Ecore_Wl2_Input_Group
2127  * @since 1.20
2128  */
2129 EAPI Eina_Stringshare *ecore_wl2_input_name_get(Ecore_Wl2_Input *input);
2130
2131 /**
2132  * @internal
2133  *
2134  * Get the keyboard repeat rate and delay of an input
2135  *
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)
2139  *
2140  * @return True if repeat is enabled
2141  *
2142  * @ingroup Ecore_Wl2_Input_Group
2143  * @since 1.20
2144  */
2145 EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay);
2146
2147 /**
2148  * @internal
2149  *
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
2156  * @since 1.24
2157  */
2158 EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_set(Ecore_Wl2_Input *input, double rate, double delay);
2159
2160 /**
2161  * @internal
2162  *
2163  * Get the keyboard repeat rate and delay of horizontal way
2164  *
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)
2168  *
2169  * @return True if repeat is enabled
2170  *
2171  * @ingroup Ecore_Wl2_Input_Group
2172  */
2173 EAPI Eina_Bool ecore_wl2_input_keyboard_horizontal_way_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay);
2174
2175 /**
2176  * @internal
2177  *
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)
2182  *
2183  * @return True if repeat is enabled
2184  *
2185  * @ingroup Ecore_Wl2_Input_Group
2186  */
2187 EAPI Eina_Bool ecore_wl2_input_keyboard_horizontal_way_repeat_set(Ecore_Wl2_Input *input, double rate, double delay);
2188
2189 /**
2190  * @internal
2191  *
2192  * Get the keyboard repeat rate and delay of vertical way
2193  *
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)
2197  *
2198  * @return True if repeat is enabled
2199  *
2200  * @ingroup Ecore_Wl2_Input_Group
2201  */
2202 EAPI Eina_Bool ecore_wl2_input_keyboard_vertical_way_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay);
2203
2204 /**
2205  * @internal
2206  *
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)
2211  *
2212  * @return True if repeat is enabled
2213  *
2214  * @ingroup Ecore_Wl2_Input_Group
2215  */
2216 EAPI Eina_Bool ecore_wl2_input_keyboard_vertical_way_repeat_set(Ecore_Wl2_Input *input, double rate, double delay);
2217
2218 /**
2219  * @internal
2220  *
2221  * Set a given wl_surface to use as the pointer on a seat
2222  *
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
2227  *
2228  * @ingroup Ecore_Wl2_Input_Group
2229  * @since 1.20
2230  */
2231 EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
2232
2233 /**
2234  * @internal
2235  *
2236  * Set a specific cursor on a given input
2237  *
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
2241  *
2242  * @param input The seat to set the cursor on
2243  * @param cursor The name of the cursor to try and set
2244  *
2245  * @ingroup Ecore_Wl2_Input_Group
2246  * @since 1.20
2247  */
2248 EAPI void ecore_wl2_input_cursor_from_name_set(Ecore_Wl2_Input *input, const char *cursor);
2249
2250 // TIZEN_ONLY(20171207): add functions to set client's custom cursors
2251 /** @internal */
2252 EAPI void ecore_wl2_input_pointer_set(Ecore_Wl2_Input *input, struct wl_surface *surface, int hot_x, int hot_y);
2253 /** @internal */
2254 EAPI struct wl_cursor *ecore_wl2_input_cursor_get(Ecore_Wl2_Input *input, const char *cursor_name);
2255 /** @internal */
2256 EAPI void ecore_wl2_input_cursor_size_set(Ecore_Wl2_Input *input, const int size);
2257 /** @internal */
2258 EAPI void ecore_wl2_input_cursor_theme_name_set(Ecore_Wl2_Input *input, const char *cursor_theme_name);
2259 /** @internal */
2260 EAPI void ecore_wl2_input_cursor_default_restore(Ecore_Wl2_Input *input);
2261 //
2262
2263 /**
2264  * @defgroup Ecore_Wl2_Dnd_Group Wayland Library Drag-n-Drop Functions
2265  * @ingroup Ecore_Wl2_Group
2266  *
2267  * Functions that deal with creating, destroying, or interacting with
2268  * Wayland Drag-n-Drop
2269  */
2270
2271 /**
2272  * @internal
2273  *
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
2276  *
2277  * @param input the input where to add on the data source
2278  * @param types a null-terminated array of mimetypes
2279  *
2280  * @ingroup Ecore_Wl2_Dnd_Group
2281  * @since 1.17
2282  */
2283 EAPI void ecore_wl2_dnd_drag_types_set(Ecore_Wl2_Input *input, const char **types);
2284
2285 /**
2286  * @internal
2287  *
2288  * Start a drag on the given input
2289  *
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.
2293  *
2294  * @return The serial for the start_drag request
2295  *
2296  * @ingroup Ecore_Wl2_Dnd_Group
2297  * @since 1.17
2298  */
2299 EAPI uint32_t ecore_wl2_dnd_drag_start(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, Ecore_Wl2_Window *drag_window);
2300
2301 /**
2302  * @internal
2303  *
2304  * Call wl_data_source.set_actions on an existing source
2305  *
2306  * @param input the input to use
2307  *
2308  * @see ecore_wl2_dnd_drag_start for a more useful function.
2309  *
2310  * @ingroup Ecore_Wl2_Dnd_Group
2311  * @since 1.20
2312  */
2313 EAPI void ecore_wl2_dnd_set_actions(Ecore_Wl2_Input *input);
2314
2315 /**
2316  * @internal
2317  *
2318  * End a drag started by a call to ecore_wl2_dnd_drag_start
2319  *
2320  * @param input the input object on which the drag was started
2321  *
2322  * @ingroup Ecore_Wl2_Dnd_Group
2323  * @since 1.17
2324  */
2325 EAPI void ecore_wl2_dnd_drag_end(Ecore_Wl2_Input *input);
2326
2327 /**
2328  * @internal
2329  *
2330  * Get the offer which is currently resposible for the clipboard
2331  *
2332  * @param input the input object to use
2333  *
2334  * @ingroup Ecore_Wl2_Dnd_Group
2335  * @since 1.19
2336  */
2337 EAPI Ecore_Wl2_Offer* ecore_wl2_dnd_selection_get(Ecore_Wl2_Input *input);
2338
2339 /**
2340  * @internal
2341  *
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
2345  *
2346  * @param input the input to provice this types on
2347  * @param types a null-terminated array of mimetypes supported by the client
2348  *
2349  * @return serial of request on success, 0 on failure
2350  *
2351  * @ingroup Ecore_Wl2_Dnd_Group
2352  * @since 1.17
2353  */
2354 EAPI uint32_t ecore_wl2_dnd_selection_set(Ecore_Wl2_Input *input, const char **types);
2355
2356 /**
2357  * @internal
2358  *
2359  * Clear the selection currently setted on this input.
2360  *
2361  * @param input the input to clear
2362  *
2363  * @return serial of request on success, 0 on failure
2364  *
2365  * @ingroup Ecore_Wl2_Dnd_Group
2366  * @since 1.17
2367  */
2368 EAPI uint32_t ecore_wl2_dnd_selection_clear(Ecore_Wl2_Input *input);
2369
2370 // TIZEN_ONLY(20211018): added ecore_wl2_offer functions to ecore_wl2
2371 /**
2372  * @internal
2373  *
2374  * Get the actions available from the data source
2375  *
2376  * @param offer Offer object to use
2377  *
2378  * @return or´ed values from Ecore_Wl2_Drag_Action which are describing the available actions
2379  *
2380  * @ingroup Ecore_Wl2_Dnd_Group
2381  * @since 1.19
2382  */
2383 EAPI Ecore_Wl2_Drag_Action ecore_wl2_offer_actions_get(Ecore_Wl2_Offer *offer);
2384
2385 /**
2386  * @internal
2387  *
2388  * Set the actions which are supported by you
2389  *
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
2393  *
2394  * @ingroup Ecore_Wl2_Dnd_Group
2395  * @since 1.19
2396  */
2397 EAPI void ecore_wl2_offer_actions_set(Ecore_Wl2_Offer *offer, Ecore_Wl2_Drag_Action actions, Ecore_Wl2_Drag_Action action);
2398
2399 /**
2400  * @internal
2401  *
2402  * Get action which is set by either the data source or in the last call of actions_set
2403  *
2404  * @param offer Offer object to use
2405  *
2406  * @return the preferred action
2407  *
2408  * @ingroup Ecore_Wl2_Dnd_Group
2409  * @since 1.19
2410  */
2411 EAPI Ecore_Wl2_Drag_Action ecore_wl2_offer_action_get(Ecore_Wl2_Offer *offer);
2412
2413 /**
2414  * @internal
2415  *
2416  * Get the mime types which are given by the source
2417  *
2418  * @param offer the offer to query
2419  *
2420  * @return a eina array of strdup´ed strings, this array must NOT be changed or freed
2421  *
2422  * @ingroup Ecore_Wl2_Dnd_Group
2423  * @since 1.19
2424  */
2425 EAPI Eina_Array* ecore_wl2_offer_mimes_get(Ecore_Wl2_Offer *offer);
2426
2427 /**
2428  * @internal
2429  *
2430  * Set mimetypes you are accepting under this offer
2431  *
2432  * @param offer the offer to use
2433  *
2434  * @ingroup Ecore_Wl2_Dnd_Group
2435  * @since 1.19
2436  */
2437 EAPI void ecore_wl2_offer_mimes_set(Ecore_Wl2_Offer *offer, Eina_Array *mimes);
2438
2439 /**
2440  * @internal
2441  *
2442  * Accept a single mime type for an offer
2443  *
2444  * @param offer the offer to use
2445  * @param mime_type the mime type
2446  *
2447  * @ingroup Ecore_Wl2_Dnd_Group
2448  * @since 1.20
2449  */
2450 EAPI void ecore_wl2_offer_accept(Ecore_Wl2_Offer *offer, const char *mime_type);
2451
2452 /**
2453  * @internal
2454  *
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.
2458  *
2459  * @param offer the offer to use
2460  * @param mime the mimetype to receive
2461  *
2462  * @ingroup Ecore_Wl2_Dnd_Group
2463  * @since 1.19
2464  */
2465 EAPI void ecore_wl2_offer_receive(Ecore_Wl2_Offer *offer, char *mime);
2466
2467 /**
2468  * @internal
2469  *
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.
2473  *
2474  * @param offer the offer to use
2475  * @param mime the mimetype to receive
2476  * @param fd the fd to pass for receiving
2477  *
2478  * @ingroup Ecore_Wl2_Dnd_Group
2479  * @since 1.20
2480  */
2481 EAPI void ecore_wl2_offer_proxy_receive(Ecore_Wl2_Offer *offer, const char *mime, int fd);
2482
2483 /**
2484  * @internal
2485  *
2486  * End the use of a proxy received offer. This may invalidate the offer object
2487  *
2488  * @param offer the offer
2489  *
2490  * @ingroup Ecore_Wl2_Dnd_Group
2491  * @since 1.20
2492  */
2493 EAPI void ecore_wl2_offer_proxy_receive_end(Ecore_Wl2_Offer *offer);
2494
2495 /**
2496  * @internal
2497  *
2498  * Check if the given offer supports the given mimetype
2499  *
2500  * @param offer the offer to use
2501  * @param mime the mimetype to check
2502  *
2503  * @return Returns true if the mimetype is supported by this offer, false if not
2504  *
2505  * @ingroup Ecore_Wl2_Dnd_Group
2506  * @since 1.19
2507  */
2508 EAPI Eina_Bool ecore_wl2_offer_supports_mime(Ecore_Wl2_Offer *offer, const char *mime);
2509
2510 /**
2511  * @internal
2512  *
2513  * Mark this offer as finished
2514  * This will call the dnd_finished event on the source of the sender.
2515  *
2516  * @param offer the offer to use
2517  *
2518  * @ingroup Ecore_Wl2_Dnd_Group
2519  * @since 1.19
2520  */
2521 EAPI void ecore_wl2_offer_finish(Ecore_Wl2_Offer *offer);
2522 //
2523
2524 /**
2525  * @defgroup Ecore_Wl2_Output_Group Wayland Library Output Functions
2526  * @ingroup Ecore_Wl2_Group
2527  *
2528  * Functions that deal with creating, destroying, or interacting with
2529  * Wayland Outputs
2530  */
2531
2532 /**
2533  * @internal
2534  *
2535  * Return the DPI of a given output
2536  *
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.
2540  *
2541  * @param output The output to get the DPI of
2542  *
2543  * @return the general screen DPI (dots/pixels per inch).
2544  *
2545  * @ingroup Ecore_Wl2_Output_Group
2546  * @since 1.17
2547  */
2548 EAPI int ecore_wl2_output_dpi_get(Ecore_Wl2_Output *output);
2549
2550 /**
2551  * @internal
2552  *
2553  * Get the current transform of a given output
2554  *
2555  * @param output The output to get the transform of
2556  *
2557  * @return The output's current transform value
2558  *
2559  * @ingroup Ecore_Wl2_Output_Group
2560  * @since 1.20
2561  */
2562 EAPI int ecore_wl2_output_transform_get(Ecore_Wl2_Output *output);
2563
2564 /**
2565  * @internal
2566  *
2567  * Disable session recovery for any further connections.  Must be called
2568  * before connecting.  This is irreversible and not intended for general
2569  * use.
2570  *
2571  * @since 1.19
2572  */
2573 EAPI void ecore_wl2_session_recovery_disable(void);
2574
2575 /* TODO: doxygen if we are keeping any of the below functions public */
2576 /** @internal */
2577 EAPI Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
2578
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);
2583 //
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);
2586
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);
2589 //
2590 // TIZEN_ONLY(20200326): add ecore_wl2_window_pointer/keyboard_get() EAPI
2591 /** @internal */
2592 EAPI Ecore_Wl2_Input *ecore_wl2_window_pointer_get(Ecore_Wl2_Window *win);
2593 /** @internal */
2594 EAPI Ecore_Wl2_Input *ecore_wl2_window_keyboard_get(Ecore_Wl2_Window *win);
2595 //
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);
2598 //
2599 // TIZEN_ONLY(20200601): support sync between ui and video
2600
2601 //TIZEN_ONLY(20171108): add a new API to ecore_wl2_sync
2602 /** @internal */
2603 EAPI void ecore_wl2_sync(void);
2604 //
2605
2606 //TIZEN_ONLY(20220322): add resource id to window attribute
2607 /** @internal */
2608 EAPI unsigned int ecore_wl2_window_resource_id_get(Ecore_Wl2_Window *window);
2609 //
2610
2611 // TIZEN_ONLY(20221208): support default cursor configuration
2612 /** @internal */
2613 EAPI void ecore_wl2_cursor_config_name_set(const char *name);
2614 //
2615
2616 //TIZEN_ONLY(20221228): add resize request set for ignoring configure event
2617 /** @internal */
2618 EAPI void ecore_wl2_window_resize_request_set(Ecore_Wl2_Window *window, int w, int h);
2619 //
2620 //TIZEN_ONLY(20230220): unset pending resize request
2621 /** @internal */
2622 EAPI void ecore_wl2_window_resize_request_unset(Ecore_Wl2_Window *window);
2623 //
2624
2625 //TIZEN_ONLY(20230306): support pin mode
2626 /** @internal */
2627 EAPI void ecore_wl2_window_pin_mode_set(Ecore_Wl2_Window *window, Eina_Bool pinned);
2628 /** @internal */
2629 EAPI Eina_Bool ecore_wl2_window_pin_mode_get(Ecore_Wl2_Window *window);
2630 //
2631
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);
2637
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);
2640 //
2641
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);
2645
2646 # undef EAPI
2647 # define EAPI
2648
2649 # ifdef __cplusplus
2650 }
2651 # endif
2652
2653 #endif