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