aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c')
-rw-r--r--libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c1307
1 files changed, 0 insertions, 1307 deletions
diff --git a/libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c b/libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c
deleted file mode 100644
index 60bfc9c..0000000
--- a/libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c
+++ /dev/null
@@ -1,1307 +0,0 @@
1#include "ecore_xcb_private.h"
2
3/* local function prototypes */
4static Ecore_X_Atom _ecore_xcb_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state);
5static Ecore_X_Virtual_Keyboard_State _ecore_xcb_e_vkbd_state_get(Ecore_X_Atom atom);
6static Ecore_X_Atom _ecore_xcb_e_quickpanel_atom_get(Ecore_X_Illume_Quickpanel_State state);
7static Ecore_X_Illume_Quickpanel_State _ecore_xcb_e_quickpanel_state_get(Ecore_X_Atom atom);
8static Ecore_X_Atom _ecore_xcb_e_illume_atom_get(Ecore_X_Illume_Mode mode);
9static Ecore_X_Illume_Mode _ecore_xcb_e_illume_mode_get(Ecore_X_Atom atom);
10static Ecore_X_Atom _ecore_xcb_e_indicator_atom_get(Ecore_X_Illume_Indicator_State state);
11static Ecore_X_Illume_Indicator_State _ecore_xcb_e_indicator_state_get(Ecore_X_Atom atom);
12
13EAPI void
14ecore_x_e_init(void)
15{
16}
17
18EAPI void
19ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root,
20 Ecore_X_Window win)
21{
22 xcb_client_message_event_t ev;
23
24 LOGFN(__FILE__, __LINE__, __FUNCTION__);
25 CHECK_XCB_CONN;
26
27 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
28
29 memset(&ev, 0, sizeof(xcb_client_message_event_t));
30
31 ev.response_type = XCB_CLIENT_MESSAGE;
32 ev.format = 32;
33 ev.window = win;
34 ev.type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
35 ev.data.data32[0] = win;
36 ev.data.data32[1] = 0;
37 ev.data.data32[2] = 0;
38 ev.data.data32[3] = 0;
39 ev.data.data32[4] = 0;
40
41 xcb_send_event(_ecore_xcb_conn, 0, root,
42 (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
43 XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
44// ecore_x_flush();
45}
46
47EAPI void
48ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root,
49 Ecore_X_Window win,
50 int w,
51 int h)
52{
53 xcb_client_message_event_t ev;
54
55 LOGFN(__FILE__, __LINE__, __FUNCTION__);
56 CHECK_XCB_CONN;
57
58 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
59
60 memset(&ev, 0, sizeof(xcb_client_message_event_t));
61
62 ev.response_type = XCB_CLIENT_MESSAGE;
63 ev.format = 32;
64 ev.window = win;
65 ev.type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
66 ev.data.data32[0] = win;
67 ev.data.data32[1] = 1;
68 ev.data.data32[2] = w;
69 ev.data.data32[3] = h;
70 ev.data.data32[4] = 0;
71
72 xcb_send_event(_ecore_xcb_conn, 0, root,
73 (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
74 XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
75// ecore_x_flush();
76}
77
78EAPI void
79ecore_x_e_comp_sync_counter_set(Ecore_X_Window win,
80 Ecore_X_Sync_Counter counter)
81{
82 LOGFN(__FILE__, __LINE__, __FUNCTION__);
83
84 if (counter)
85 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
86 ECORE_X_ATOM_CARDINAL, &counter, 1);
87 else
88 ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER);
89}
90
91EAPI Ecore_X_Sync_Counter
92ecore_x_e_comp_sync_counter_get(Ecore_X_Window win)
93{
94 Ecore_X_Sync_Counter counter = 0;
95 int ret = 0;
96
97 LOGFN(__FILE__, __LINE__, __FUNCTION__);
98
99 ret = ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
100 ECORE_X_ATOM_CARDINAL, &counter, 1);
101 if (ret != 1) return 0;
102 return counter;
103}
104
105EAPI Eina_Bool
106ecore_x_e_comp_sync_supported_get(Ecore_X_Window root)
107{
108 Ecore_X_Window win, win2;
109 int ret = 0;
110
111 LOGFN(__FILE__, __LINE__, __FUNCTION__);
112
113 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
114 ret =
115 ecore_x_window_prop_xid_get(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
116 ECORE_X_ATOM_WINDOW, &win, 1);
117 if ((ret == 1) && (win))
118 {
119 ret =
120 ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
121 ECORE_X_ATOM_WINDOW, &win2, 1);
122 if ((ret == 1) && (win2 == win))
123 return EINA_TRUE;
124 }
125 return EINA_FALSE;
126}
127
128EAPI void
129ecore_x_e_comp_sync_supported_set(Ecore_X_Window root,
130 Eina_Bool enabled)
131{
132 Ecore_X_Window win;
133
134 LOGFN(__FILE__, __LINE__, __FUNCTION__);
135
136 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
137 if (enabled)
138 {
139 win = ecore_x_window_new(root, 1, 2, 3, 4);
140 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
141 ECORE_X_ATOM_WINDOW, &win, 1);
142 ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
143 ECORE_X_ATOM_WINDOW, &win, 1);
144 }
145 else
146 {
147 int ret = 0;
148
149 ret = ecore_x_window_prop_xid_get(root,
150 ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
151 ECORE_X_ATOM_WINDOW, &win, 1);
152 if ((ret == 1) && (win))
153 {
154 ecore_x_window_prop_property_del(root,
155 ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED);
156 ecore_x_window_free(win);
157 }
158 }
159}
160
161EAPI void
162ecore_x_e_comp_sync_begin_send(Ecore_X_Window win)
163{
164 xcb_client_message_event_t ev;
165
166 LOGFN(__FILE__, __LINE__, __FUNCTION__);
167 CHECK_XCB_CONN;
168
169 memset(&ev, 0, sizeof(xcb_client_message_event_t));
170
171 ev.response_type = XCB_CLIENT_MESSAGE;
172 ev.format = 32;
173 ev.window = win;
174 ev.type = ECORE_X_ATOM_E_COMP_SYNC_BEGIN;
175 ev.data.data32[0] = win;
176 ev.data.data32[1] = 0;
177 ev.data.data32[2] = 0;
178 ev.data.data32[3] = 0;
179 ev.data.data32[4] = 0;
180
181 xcb_send_event(_ecore_xcb_conn, 0, win,
182 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
183// ecore_x_flush();
184}
185
186EAPI void
187ecore_x_e_comp_sync_end_send(Ecore_X_Window win)
188{
189 xcb_client_message_event_t ev;
190
191 LOGFN(__FILE__, __LINE__, __FUNCTION__);
192 CHECK_XCB_CONN;
193
194 memset(&ev, 0, sizeof(xcb_client_message_event_t));
195
196 ev.response_type = XCB_CLIENT_MESSAGE;
197 ev.format = 32;
198 ev.window = win;
199 ev.type = ECORE_X_ATOM_E_COMP_SYNC_END;
200 ev.data.data32[0] = win;
201 ev.data.data32[1] = 0;
202 ev.data.data32[2] = 0;
203 ev.data.data32[3] = 0;
204 ev.data.data32[4] = 0;
205
206 xcb_send_event(_ecore_xcb_conn, 0, win,
207 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
208// ecore_x_flush();
209}
210
211EAPI void
212ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win)
213{
214 xcb_client_message_event_t ev;
215
216 LOGFN(__FILE__, __LINE__, __FUNCTION__);
217 CHECK_XCB_CONN;
218
219 memset(&ev, 0, sizeof(xcb_client_message_event_t));
220
221 ev.response_type = XCB_CLIENT_MESSAGE;
222 ev.format = 32;
223 ev.window = win;
224 ev.type = ECORE_X_ATOM_E_COMP_SYNC_CANCEL;
225 ev.data.data32[0] = win;
226 ev.data.data32[1] = 0;
227 ev.data.data32[2] = 0;
228 ev.data.data32[3] = 0;
229 ev.data.data32[4] = 0;
230
231 xcb_send_event(_ecore_xcb_conn, 0, win,
232 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
233// ecore_x_flush();
234}
235
236EAPI void
237ecore_x_e_comp_flush_send(Ecore_X_Window win)
238{
239 xcb_client_message_event_t ev;
240
241 LOGFN(__FILE__, __LINE__, __FUNCTION__);
242 CHECK_XCB_CONN;
243
244 memset(&ev, 0, sizeof(xcb_client_message_event_t));
245
246 ev.response_type = XCB_CLIENT_MESSAGE;
247 ev.format = 32;
248 ev.window = win;
249 ev.type = ECORE_X_ATOM_E_COMP_FLUSH;
250 ev.data.data32[0] = win;
251 ev.data.data32[1] = 0;
252 ev.data.data32[2] = 0;
253 ev.data.data32[3] = 0;
254 ev.data.data32[4] = 0;
255
256 xcb_send_event(_ecore_xcb_conn, 0, win,
257 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
258// ecore_x_flush();
259}
260
261EAPI void
262ecore_x_e_comp_dump_send(Ecore_X_Window win)
263{
264 xcb_client_message_event_t ev;
265
266 LOGFN(__FILE__, __LINE__, __FUNCTION__);
267 CHECK_XCB_CONN;
268
269 memset(&ev, 0, sizeof(xcb_client_message_event_t));
270
271 ev.response_type = XCB_CLIENT_MESSAGE;
272 ev.format = 32;
273 ev.window = win;
274 ev.type = ECORE_X_ATOM_E_COMP_DUMP;
275 ev.data.data32[0] = win;
276 ev.data.data32[1] = 0;
277 ev.data.data32[2] = 0;
278 ev.data.data32[3] = 0;
279 ev.data.data32[4] = 0;
280
281 xcb_send_event(_ecore_xcb_conn, 0, win,
282 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
283// ecore_x_flush();
284}
285
286EAPI void
287ecore_x_e_comp_pixmap_set(Ecore_X_Window win,
288 Ecore_X_Pixmap pixmap)
289{
290 LOGFN(__FILE__, __LINE__, __FUNCTION__);
291
292 if (pixmap)
293 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_PIXMAP,
294 ECORE_X_ATOM_PIXMAP, &pixmap, 1);
295 else
296 ecore_x_window_prop_property_del(win, pixmap);
297}
298
299EAPI Ecore_X_Pixmap
300ecore_x_e_comp_pixmap_get(Ecore_X_Window win)
301{
302 Ecore_X_Pixmap pixmap = 0;
303 int ret = 0;
304
305 LOGFN(__FILE__, __LINE__, __FUNCTION__);
306
307 ret = ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_PIXMAP,
308 ECORE_X_ATOM_PIXMAP, &pixmap, 1);
309 if (ret != 1) return 0;
310 return pixmap;
311}
312
313EAPI void
314ecore_x_e_frame_size_set(Ecore_X_Window win,
315 int fl,
316 int fr,
317 int ft,
318 int fb)
319{
320 uint32_t frames[4];
321
322 LOGFN(__FILE__, __LINE__, __FUNCTION__);
323
324 frames[0] = fl;
325 frames[1] = fr;
326 frames[2] = ft;
327 frames[3] = fb;
328 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_FRAME_SIZE, frames, 4);
329}
330
331EAPI Ecore_X_Virtual_Keyboard_State
332ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win)
333{
334 Ecore_X_Atom atom = 0;
335
336 LOGFN(__FILE__, __LINE__, __FUNCTION__);
337
338 if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
339 &atom, 1))
340 return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
341
342 return _ecore_xcb_e_vkbd_state_get(atom);
343}
344
345EAPI void
346ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win,
347 Ecore_X_Virtual_Keyboard_State state)
348{
349 Ecore_X_Atom atom = 0;
350
351 LOGFN(__FILE__, __LINE__, __FUNCTION__);
352
353 atom = _ecore_xcb_e_vkbd_atom_get(state);
354 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
355 &atom, 1);
356}
357
358EAPI void
359ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win,
360 Ecore_X_Virtual_Keyboard_State state)
361{
362 LOGFN(__FILE__, __LINE__, __FUNCTION__);
363
364 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
365 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
366 _ecore_xcb_e_vkbd_atom_get(state),
367 0, 0, 0, 0);
368}
369
370EAPI void
371ecore_x_e_virtual_keyboard_set(Ecore_X_Window win,
372 unsigned int is_keyboard)
373{
374 LOGFN(__FILE__, __LINE__, __FUNCTION__);
375
376 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
377 &is_keyboard, 1);
378}
379
380EAPI Eina_Bool
381ecore_x_e_virtual_keyboard_get(Ecore_X_Window win)
382{
383 unsigned int val = 0;
384
385 LOGFN(__FILE__, __LINE__, __FUNCTION__);
386
387 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
388 &val, 1))
389 return EINA_FALSE;
390
391 return val ? EINA_TRUE : EINA_FALSE;
392}
393
394EAPI int
395ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win)
396{
397 unsigned int val = 0;
398
399 LOGFN(__FILE__, __LINE__, __FUNCTION__);
400
401 if (!ecore_x_window_prop_card32_get(win,
402 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR,
403 &val, 1))
404 return 0;
405
406 return val;
407}
408
409EAPI void
410ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win,
411 unsigned int priority)
412{
413 LOGFN(__FILE__, __LINE__, __FUNCTION__);
414
415 ecore_x_window_prop_card32_set(win,
416 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR,
417 &priority, 1);
418}
419
420EAPI int
421ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win)
422{
423 unsigned int val = 0;
424
425 LOGFN(__FILE__, __LINE__, __FUNCTION__);
426
427 if (!ecore_x_window_prop_card32_get(win,
428 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR,
429 &val, 1))
430 return 0;
431
432 return val;
433}
434
435EAPI void
436ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win,
437 unsigned int priority)
438{
439 LOGFN(__FILE__, __LINE__, __FUNCTION__);
440
441 ecore_x_window_prop_card32_set(win,
442 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR,
443 &priority, 1);
444}
445
446EAPI void
447ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win,
448 unsigned int zone)
449{
450 LOGFN(__FILE__, __LINE__, __FUNCTION__);
451
452 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE,
453 &zone, 1);
454}
455
456EAPI int
457ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win)
458{
459 unsigned int val = 0;
460
461 LOGFN(__FILE__, __LINE__, __FUNCTION__);
462
463 if (!ecore_x_window_prop_card32_get(win,
464 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE,
465 &val, 1))
466 return 0;
467
468 return val;
469}
470
471EAPI void
472ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win)
473{
474 LOGFN(__FILE__, __LINE__, __FUNCTION__);
475
476 ecore_x_client_message32_send(win,
477 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_POSITION_UPDATE,
478 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
479 1, 0, 0, 0, 0);
480}
481
482EAPI Eina_Bool
483ecore_x_e_illume_conformant_get(Ecore_X_Window win)
484{
485 unsigned int val = 0;
486
487 LOGFN(__FILE__, __LINE__, __FUNCTION__);
488
489 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT,
490 &val, 1))
491 return EINA_FALSE;
492
493 return val ? EINA_TRUE : EINA_FALSE;
494}
495
496EAPI void
497ecore_x_e_illume_conformant_set(Ecore_X_Window win,
498 unsigned int is_conformant)
499{
500 LOGFN(__FILE__, __LINE__, __FUNCTION__);
501
502 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT,
503 &is_conformant, 1);
504}
505
506EAPI void
507ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win,
508 int x,
509 int y,
510 int w,
511 int h)
512{
513 unsigned int geom[4];
514
515 LOGFN(__FILE__, __LINE__, __FUNCTION__);
516
517 geom[0] = x;
518 geom[1] = y;
519 geom[2] = w;
520 geom[3] = h;
521 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY,
522 geom, 4);
523}
524
525EAPI Eina_Bool
526ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win,
527 int *x,
528 int *y,
529 int *w,
530 int *h)
531{
532 unsigned int geom[4];
533
534 LOGFN(__FILE__, __LINE__, __FUNCTION__);
535
536 if (x) *x = 0;
537 if (y) *y = 0;
538 if (w) *w = 0;
539 if (h) *h = 0;
540
541 if (ecore_x_window_prop_card32_get(win,
542 ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY,
543 geom, 4) != 4)
544 return EINA_FALSE;
545
546 if (x) *x = geom[0];
547 if (y) *y = geom[1];
548 if (w) *w = geom[2];
549 if (h) *h = geom[3];
550
551 return EINA_TRUE;
552}
553
554EAPI void
555ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win,
556 int x,
557 int y,
558 int w,
559 int h)
560{
561 unsigned int geom[4];
562
563 LOGFN(__FILE__, __LINE__, __FUNCTION__);
564
565 geom[0] = x;
566 geom[1] = y;
567 geom[2] = w;
568 geom[3] = h;
569 ecore_x_window_prop_card32_set(win,
570 ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY,
571 geom, 4);
572}
573
574EAPI Eina_Bool
575ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win,
576 int *x,
577 int *y,
578 int *w,
579 int *h)
580{
581 unsigned int geom[4];
582
583 LOGFN(__FILE__, __LINE__, __FUNCTION__);
584
585 if (x) *x = 0;
586 if (y) *y = 0;
587 if (w) *w = 0;
588 if (h) *h = 0;
589
590 if (ecore_x_window_prop_card32_get(win,
591 ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY,
592 geom, 4) != 4)
593 return EINA_FALSE;
594
595 if (x) *x = geom[0];
596 if (y) *y = geom[1];
597 if (w) *w = geom[2];
598 if (h) *h = geom[3];
599
600 return EINA_TRUE;
601}
602
603EAPI void
604ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win,
605 int x,
606 int y,
607 int w,
608 int h)
609{
610 unsigned int geom[4];
611
612 LOGFN(__FILE__, __LINE__, __FUNCTION__);
613
614 geom[0] = x;
615 geom[1] = y;
616 geom[2] = w;
617 geom[3] = h;
618 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY,
619 geom, 4);
620}
621
622EAPI Eina_Bool
623ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win,
624 int *x,
625 int *y,
626 int *w,
627 int *h)
628{
629 unsigned int geom[4];
630
631 LOGFN(__FILE__, __LINE__, __FUNCTION__);
632
633 if (x) *x = 0;
634 if (y) *y = 0;
635 if (w) *w = 0;
636 if (h) *h = 0;
637
638 if (ecore_x_window_prop_card32_get(win,
639 ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY,
640 geom, 4) != 4)
641 return EINA_FALSE;
642
643 if (x) *x = geom[0];
644 if (y) *y = geom[1];
645 if (w) *w = geom[2];
646 if (h) *h = geom[3];
647
648 return EINA_TRUE;
649}
650
651EAPI void
652ecore_x_e_illume_quickpanel_set(Ecore_X_Window win,
653 unsigned int is_quickpanel)
654{
655 LOGFN(__FILE__, __LINE__, __FUNCTION__);
656
657 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL,
658 &is_quickpanel, 1);
659}
660
661EAPI Eina_Bool
662ecore_x_e_illume_quickpanel_get(Ecore_X_Window win)
663{
664 unsigned int val = 0;
665
666 LOGFN(__FILE__, __LINE__, __FUNCTION__);
667
668 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL,
669 &val, 1))
670 return EINA_FALSE;
671
672 return val ? EINA_TRUE : EINA_FALSE;
673}
674
675EAPI void
676ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win,
677 Ecore_X_Illume_Quickpanel_State state)
678{
679 Ecore_X_Atom atom = 0;
680
681 LOGFN(__FILE__, __LINE__, __FUNCTION__);
682
683 atom = _ecore_xcb_e_quickpanel_atom_get(state);
684 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
685 &atom, 1);
686}
687
688EAPI Ecore_X_Illume_Quickpanel_State
689ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win)
690{
691 Ecore_X_Atom atom = 0;
692
693 LOGFN(__FILE__, __LINE__, __FUNCTION__);
694
695 if (!ecore_x_window_prop_atom_get(win,
696 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
697 &atom, 1))
698 return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN;
699
700 return _ecore_xcb_e_quickpanel_state_get(atom);
701}
702
703EAPI void
704ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win,
705 Ecore_X_Illume_Quickpanel_State state)
706{
707 LOGFN(__FILE__, __LINE__, __FUNCTION__);
708 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
709 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
710 _ecore_xcb_e_quickpanel_atom_get(state),
711 0, 0, 0, 0);
712}
713
714EAPI void
715ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win)
716{
717 LOGFN(__FILE__, __LINE__, __FUNCTION__);
718 ecore_x_client_message32_send(win,
719 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE_TOGGLE,
720 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
721 0, 0, 0, 0, 0);
722}
723
724static Ecore_X_Atom
725_ecore_xcb_e_clipboard_atom_get(Ecore_X_Illume_Clipboard_State state)
726{
727 switch (state)
728 {
729 case ECORE_X_ILLUME_CLIPBOARD_STATE_ON:
730 return ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON;
731 case ECORE_X_ILLUME_CLIPBOARD_STATE_OFF:
732 return ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF;
733 default:
734 break;
735 }
736 return 0;
737}
738
739static Ecore_X_Illume_Clipboard_State
740_ecore_xcb_e_clipboard_state_get(Ecore_X_Atom atom)
741{
742 if (atom == ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON)
743 return ECORE_X_ILLUME_CLIPBOARD_STATE_ON;
744
745 if (atom == ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF)
746 return ECORE_X_ILLUME_CLIPBOARD_STATE_OFF;
747
748 return ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN;
749}
750
751EAPI void
752ecore_x_e_illume_clipboard_state_set(Ecore_X_Window win,
753 Ecore_X_Illume_Clipboard_State state)
754{
755 Ecore_X_Atom atom = 0;
756
757 LOGFN(__FILE__, __LINE__, __FUNCTION__);
758 atom = _ecore_xcb_e_clipboard_atom_get(state);
759
760 ecore_x_window_prop_atom_set(win,
761 ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE,
762 &atom, 1);
763}
764
765EAPI Ecore_X_Illume_Clipboard_State
766ecore_x_e_illume_clipboard_state_get(Ecore_X_Window win)
767{
768 Ecore_X_Atom atom = 0;
769
770 LOGFN(__FILE__, __LINE__, __FUNCTION__);
771
772 if (!ecore_x_window_prop_atom_get(win,
773 ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE,
774 &atom, 1))
775 return ECORE_X_ILLUME_CLIPBOARD_STATE_UNKNOWN;
776 return _ecore_xcb_e_clipboard_state_get(atom);
777}
778
779EAPI void
780ecore_x_e_illume_clipboard_geometry_set(Ecore_X_Window win,
781 int x, int y, int w, int h)
782{
783 unsigned int geom[4];
784
785 LOGFN(__FILE__, __LINE__, __FUNCTION__);
786 geom[0] = x;
787 geom[1] = y;
788 geom[2] = w;
789 geom[3] = h;
790 ecore_x_window_prop_card32_set(win,
791 ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY,
792 geom, 4);
793}
794
795EAPI Eina_Bool
796ecore_x_e_illume_clipboard_geometry_get(Ecore_X_Window win,
797 int *x, int *y, int *w, int *h)
798{
799 int ret = 0;
800 unsigned int geom[4];
801
802 LOGFN(__FILE__, __LINE__, __FUNCTION__);
803 ret =
804 ecore_x_window_prop_card32_get(win,
805 ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY,
806 geom, 4);
807 if (ret != 4) return EINA_FALSE;
808
809 if (x) *x = geom[0];
810 if (y) *y = geom[1];
811 if (w) *w = geom[2];
812 if (h) *h = geom[3];
813
814 return EINA_TRUE;
815}
816
817EAPI void
818ecore_x_e_illume_mode_set(Ecore_X_Window win,
819 Ecore_X_Illume_Mode mode)
820{
821 Ecore_X_Atom atom = 0;
822
823 LOGFN(__FILE__, __LINE__, __FUNCTION__);
824
825 atom = _ecore_xcb_e_illume_atom_get(mode);
826 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_MODE, &atom, 1);
827}
828
829EAPI Ecore_X_Illume_Mode
830ecore_x_e_illume_mode_get(Ecore_X_Window win)
831{
832 Ecore_X_Atom atom = 0;
833
834 LOGFN(__FILE__, __LINE__, __FUNCTION__);
835
836 if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_ILLUME_MODE, &atom, 1))
837 return ECORE_X_ILLUME_MODE_UNKNOWN;
838
839 return _ecore_xcb_e_illume_mode_get(atom);
840}
841
842EAPI void
843ecore_x_e_illume_mode_send(Ecore_X_Window win,
844 Ecore_X_Illume_Mode mode)
845{
846 LOGFN(__FILE__, __LINE__, __FUNCTION__);
847
848 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_MODE,
849 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
850 _ecore_xcb_e_illume_atom_get(mode),
851 0, 0, 0, 0);
852}
853
854EAPI void
855ecore_x_e_illume_focus_back_send(Ecore_X_Window win)
856{
857 LOGFN(__FILE__, __LINE__, __FUNCTION__);
858
859 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_BACK,
860 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
861 1, 0, 0, 0, 0);
862}
863
864EAPI void
865ecore_x_e_illume_focus_forward_send(Ecore_X_Window win)
866{
867 LOGFN(__FILE__, __LINE__, __FUNCTION__);
868
869 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_FORWARD,
870 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
871 1, 0, 0, 0, 0);
872}
873
874EAPI void
875ecore_x_e_illume_focus_home_send(Ecore_X_Window win)
876{
877 LOGFN(__FILE__, __LINE__, __FUNCTION__);
878
879 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_HOME,
880 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
881 1, 0, 0, 0, 0);
882}
883
884EAPI void
885ecore_x_e_illume_close_send(Ecore_X_Window win)
886{
887 LOGFN(__FILE__, __LINE__, __FUNCTION__);
888
889 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_CLOSE,
890 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
891 1, 0, 0, 0, 0);
892}
893
894EAPI void
895ecore_x_e_illume_home_new_send(Ecore_X_Window win)
896{
897 LOGFN(__FILE__, __LINE__, __FUNCTION__);
898
899 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_NEW,
900 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
901 1, 0, 0, 0, 0);
902}
903
904EAPI void
905ecore_x_e_illume_home_del_send(Ecore_X_Window win)
906{
907 LOGFN(__FILE__, __LINE__, __FUNCTION__);
908
909 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_DEL,
910 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
911 1, 0, 0, 0, 0);
912}
913
914EAPI void
915ecore_x_e_illume_drag_set(Ecore_X_Window win,
916 unsigned int drag)
917{
918 LOGFN(__FILE__, __LINE__, __FUNCTION__);
919
920 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG, &drag, 1);
921}
922
923EAPI void
924ecore_x_e_illume_drag_locked_set(Ecore_X_Window win,
925 unsigned int is_locked)
926{
927 LOGFN(__FILE__, __LINE__, __FUNCTION__);
928
929 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED,
930 &is_locked, 1);
931}
932
933EAPI Eina_Bool
934ecore_x_e_illume_drag_locked_get(Ecore_X_Window win)
935{
936 unsigned int val = 0;
937
938 LOGFN(__FILE__, __LINE__, __FUNCTION__);
939
940 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED,
941 &val, 1))
942 return EINA_FALSE;
943
944 return val ? EINA_TRUE : EINA_FALSE;
945}
946
947EAPI Eina_Bool
948ecore_x_e_illume_drag_get(Ecore_X_Window win)
949{
950 unsigned int val = 0;
951
952 LOGFN(__FILE__, __LINE__, __FUNCTION__);
953
954 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG, &val, 1))
955 return EINA_FALSE;
956
957 return val ? EINA_TRUE : EINA_FALSE;
958}
959
960EAPI void
961ecore_x_e_illume_drag_start_send(Ecore_X_Window win)
962{
963 LOGFN(__FILE__, __LINE__, __FUNCTION__);
964 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_START,
965 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
966 1, 0, 0, 0, 0);
967}
968
969EAPI void
970ecore_x_e_illume_drag_end_send(Ecore_X_Window win)
971{
972 LOGFN(__FILE__, __LINE__, __FUNCTION__);
973 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_END,
974 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
975 1, 0, 0, 0, 0);
976}
977
978EAPI void
979ecore_x_e_illume_zone_set(Ecore_X_Window win,
980 Ecore_X_Window zone)
981{
982 LOGFN(__FILE__, __LINE__, __FUNCTION__);
983
984 ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE, &zone, 1);
985}
986
987EAPI Ecore_X_Window
988ecore_x_e_illume_zone_get(Ecore_X_Window win)
989{
990 Ecore_X_Window zone;
991
992 LOGFN(__FILE__, __LINE__, __FUNCTION__);
993
994 if (!ecore_x_window_prop_window_get(win, ECORE_X_ATOM_E_ILLUME_ZONE,
995 &zone, 1))
996 return 0;
997
998 return zone;
999}
1000
1001EAPI void
1002ecore_x_e_illume_zone_list_set(Ecore_X_Window win,
1003 Ecore_X_Window *zones,
1004 unsigned int num)
1005{
1006 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1007
1008 ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE_LIST,
1009 zones, num);
1010}
1011
1012/* local functions */
1013static Ecore_X_Atom
1014_ecore_xcb_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state)
1015{
1016 switch (state)
1017 {
1018 case ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF:
1019 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF;
1020
1021 case ECORE_X_VIRTUAL_KEYBOARD_STATE_ON:
1022 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON;
1023
1024 case ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA:
1025 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA;
1026
1027 case ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC:
1028 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC;
1029
1030 case ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN:
1031 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN;
1032
1033 case ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER:
1034 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER;
1035
1036 case ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX:
1037 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX;
1038
1039 case ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL:
1040 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL;
1041
1042 case ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD:
1043 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD;
1044
1045 case ECORE_X_VIRTUAL_KEYBOARD_STATE_IP:
1046 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP;
1047
1048 case ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST:
1049 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST;
1050
1051 case ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE:
1052 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE;
1053
1054 case ECORE_X_VIRTUAL_KEYBOARD_STATE_URL:
1055 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL;
1056
1057 case ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD:
1058 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD;
1059
1060 case ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME:
1061 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME;
1062
1063 default:
1064 break;
1065 }
1066 return 0;
1067}
1068
1069static Ecore_X_Virtual_Keyboard_State
1070_ecore_xcb_e_vkbd_state_get(Ecore_X_Atom atom)
1071{
1072 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON)
1073 return ECORE_X_VIRTUAL_KEYBOARD_STATE_ON;
1074 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF)
1075 return ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF;
1076 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA)
1077 return ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA;
1078 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC)
1079 return ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC;
1080 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN)
1081 return ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN;
1082 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER)
1083 return ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER;
1084 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX)
1085 return ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX;
1086 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL)
1087 return ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL;
1088 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD)
1089 return ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD;
1090 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP)
1091 return ECORE_X_VIRTUAL_KEYBOARD_STATE_IP;
1092 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST)
1093 return ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST;
1094 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE)
1095 return ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE;
1096 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL)
1097 return ECORE_X_VIRTUAL_KEYBOARD_STATE_URL;
1098 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD)
1099 return ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD;
1100 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME)
1101 return ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME;
1102
1103 return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
1104}
1105
1106static Ecore_X_Atom
1107_ecore_xcb_e_quickpanel_atom_get(Ecore_X_Illume_Quickpanel_State state)
1108{
1109 switch (state)
1110 {
1111 case ECORE_X_ILLUME_QUICKPANEL_STATE_ON:
1112 return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON;
1113
1114 case ECORE_X_ILLUME_QUICKPANEL_STATE_OFF:
1115 return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF;
1116
1117 default:
1118 break;
1119 }
1120 return 0;
1121}
1122
1123static Ecore_X_Illume_Quickpanel_State
1124_ecore_xcb_e_quickpanel_state_get(Ecore_X_Atom atom)
1125{
1126 if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON)
1127 return ECORE_X_ILLUME_QUICKPANEL_STATE_ON;
1128 if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF)
1129 return ECORE_X_ILLUME_QUICKPANEL_STATE_OFF;
1130
1131 return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN;
1132}
1133
1134static Ecore_X_Atom
1135_ecore_xcb_e_illume_atom_get(Ecore_X_Illume_Mode mode)
1136{
1137 switch (mode)
1138 {
1139 case ECORE_X_ILLUME_MODE_SINGLE:
1140 return ECORE_X_ATOM_E_ILLUME_MODE_SINGLE;
1141
1142 case ECORE_X_ILLUME_MODE_DUAL_TOP:
1143 return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP;
1144
1145 case ECORE_X_ILLUME_MODE_DUAL_LEFT:
1146 return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT;
1147
1148 default:
1149 break;
1150 }
1151 return ECORE_X_ILLUME_MODE_UNKNOWN;
1152}
1153
1154static Ecore_X_Illume_Mode
1155_ecore_xcb_e_illume_mode_get(Ecore_X_Atom atom)
1156{
1157 if (atom == ECORE_X_ATOM_E_ILLUME_MODE_SINGLE)
1158 return ECORE_X_ILLUME_MODE_SINGLE;
1159 if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP)
1160 return ECORE_X_ILLUME_MODE_DUAL_TOP;
1161 if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT)
1162 return ECORE_X_ILLUME_MODE_DUAL_LEFT;
1163
1164 return ECORE_X_ILLUME_MODE_UNKNOWN;
1165}
1166
1167static Ecore_X_Atom
1168_ecore_xcb_e_indicator_atom_get(Ecore_X_Illume_Indicator_State state)
1169{
1170 switch (state)
1171 {
1172 case ECORE_X_ILLUME_INDICATOR_STATE_ON:
1173 return ECORE_X_ATOM_E_ILLUME_INDICATOR_ON;
1174
1175 case ECORE_X_ILLUME_INDICATOR_STATE_OFF:
1176 return ECORE_X_ATOM_E_ILLUME_INDICATOR_OFF;
1177
1178 default:
1179 break;
1180 }
1181 return 0;
1182}
1183
1184static Ecore_X_Illume_Indicator_State
1185_ecore_xcb_e_indicator_state_get(Ecore_X_Atom atom)
1186{
1187 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_ON)
1188 return ECORE_X_ILLUME_INDICATOR_STATE_ON;
1189 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OFF)
1190 return ECORE_X_ILLUME_INDICATOR_STATE_OFF;
1191
1192 return ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN;
1193}
1194
1195EAPI void
1196ecore_x_e_illume_indicator_state_set(Ecore_X_Window win,
1197 Ecore_X_Illume_Indicator_State state)
1198{
1199 Ecore_X_Atom atom = 0;
1200
1201 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1202
1203 atom = _ecore_xcb_e_indicator_atom_get(state);
1204 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
1205 &atom, 1);
1206}
1207
1208EAPI Ecore_X_Illume_Indicator_State
1209ecore_x_e_illume_indicator_state_get(Ecore_X_Window win)
1210{
1211 Ecore_X_Atom atom = 0;
1212
1213 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1214
1215 if (!ecore_x_window_prop_atom_get(win,
1216 ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
1217 &atom, 1))
1218 return ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN;
1219
1220 return _ecore_xcb_e_indicator_state_get(atom);
1221}
1222
1223EAPI void
1224ecore_x_e_illume_indicator_state_send(Ecore_X_Window win,
1225 Ecore_X_Illume_Indicator_State state)
1226{
1227 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1228 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
1229 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1230 _ecore_xcb_e_indicator_atom_get(state),
1231 0, 0, 0, 0);
1232}
1233
1234static Ecore_X_Atom
1235_ecore_x_e_indicator_opacity_atom_get(Ecore_X_Illume_Indicator_Opacity_Mode mode)
1236{
1237 switch (mode)
1238 {
1239 case ECORE_X_ILLUME_INDICATOR_OPAQUE:
1240 return ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE;
1241
1242 case ECORE_X_ILLUME_INDICATOR_TRANSLUCENT:
1243 return ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT;
1244
1245 case ECORE_X_ILLUME_INDICATOR_TRANSPARENT:
1246 return ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT;
1247
1248 default:
1249 break;
1250 }
1251 return 0;
1252}
1253
1254static Ecore_X_Illume_Indicator_Opacity_Mode
1255_ecore_x_e_indicator_opacity_get(Ecore_X_Atom atom)
1256{
1257 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE)
1258 return ECORE_X_ILLUME_INDICATOR_OPAQUE;
1259
1260 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT)
1261 return ECORE_X_ILLUME_INDICATOR_TRANSLUCENT;
1262
1263 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT)
1264 return ECORE_X_ILLUME_INDICATOR_TRANSPARENT;
1265
1266 return ECORE_X_ILLUME_INDICATOR_OPACITY_UNKNOWN;
1267}
1268
1269EAPI void
1270ecore_x_e_illume_indicator_opacity_set(Ecore_X_Window win,
1271 Ecore_X_Illume_Indicator_Opacity_Mode mode)
1272{
1273 Ecore_X_Atom atom = 0;
1274
1275 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1276 atom = _ecore_x_e_indicator_opacity_atom_get(mode);
1277 ecore_x_window_prop_atom_set(win,
1278 ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
1279 &atom, 1);
1280}
1281
1282EAPI Ecore_X_Illume_Indicator_Opacity_Mode
1283ecore_x_e_illume_indicator_opacity_get(Ecore_X_Window win)
1284{
1285 Ecore_X_Atom atom;
1286
1287 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1288 if (!ecore_x_window_prop_atom_get(win,
1289 ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
1290 &atom, 1))
1291 return ECORE_X_ILLUME_INDICATOR_OPACITY_UNKNOWN;
1292
1293 return _ecore_x_e_indicator_opacity_get(atom);
1294}
1295
1296EAPI void
1297ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window win,
1298 Ecore_X_Illume_Indicator_Opacity_Mode mode)
1299{
1300 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1301 ecore_x_client_message32_send(win,
1302 ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
1303 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1304 _ecore_x_e_indicator_opacity_atom_get(mode),
1305 0, 0, 0, 0);
1306}
1307