svn update: 48958 (latest:48959)
[framework/uifw/ecore.git] / src / lib / ecore_x / xlib / ecore_x_e.c
1 /*
2  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
3  */
4
5 /*
6  * OLD E hints
7  */
8
9 #ifdef HAVE_CONFIG_H
10 # include <config.h>
11 #endif
12
13 #include "Ecore.h"
14 #include "ecore_x_private.h"
15 #include "Ecore_X.h"
16 #include "Ecore_X_Atoms.h"
17
18 EAPI void
19 ecore_x_e_init(void)
20 {
21 }
22
23 EAPI void
24 ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, 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, unsigned int is_keyboard)
38 {
39    LOGFN(__FILE__, __LINE__, __FUNCTION__);
40    ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
41                                   &is_keyboard, 1);
42 }
43
44 EAPI int
45 ecore_x_e_virtual_keyboard_get(Ecore_X_Window win)
46 {
47    unsigned int val;
48
49    LOGFN(__FILE__, __LINE__, __FUNCTION__);
50    if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD, &val, 1))
51      return 0;
52    return val;
53 }
54
55 static Ecore_X_Virtual_Keyboard_State
56 _ecore_x_e_vkbd_state_get(Ecore_X_Atom atom)
57 {
58    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON) 
59      return ECORE_X_VIRTUAL_KEYBOARD_STATE_ON;
60    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF) 
61      return ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF;
62    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA) 
63      return ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA;
64    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC) 
65      return ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC;
66    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN) 
67      return ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN;
68    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER) 
69      return ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER;
70    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX) 
71      return ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX;
72    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL) 
73      return ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL;
74    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD) 
75      return ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD;
76    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP) 
77      return ECORE_X_VIRTUAL_KEYBOARD_STATE_IP;
78    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST) 
79      return ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST;
80    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE) 
81      return ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE;
82    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL) 
83      return ECORE_X_VIRTUAL_KEYBOARD_STATE_URL;
84    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD) 
85      return ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD;
86    if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME) 
87      return ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME;
88    return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
89 }
90
91 static Ecore_X_Atom
92 _ecore_x_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state)
93 {
94    switch (state)
95      {
96       case ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF: 
97         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF;
98       case ECORE_X_VIRTUAL_KEYBOARD_STATE_ON: 
99         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON;
100       case ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA: 
101         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA;
102       case ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC: 
103         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC;
104       case ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN: 
105         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN;
106       case ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER: 
107         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER;
108       case ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX: 
109         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX;
110       case ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL: 
111         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL;
112       case ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD: 
113         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD;
114       case ECORE_X_VIRTUAL_KEYBOARD_STATE_IP: 
115         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP;
116       case ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST: 
117         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST;
118       case ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE: 
119         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE;
120       case ECORE_X_VIRTUAL_KEYBOARD_STATE_URL: 
121         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL;
122       case ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD: 
123         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD;
124       case ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME: 
125         return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME;
126       default: return 0;
127      }
128    return 0;
129 }
130
131 EAPI void
132 ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state)
133 {
134    Ecore_X_Atom atom = 0;
135
136    LOGFN(__FILE__, __LINE__, __FUNCTION__);
137    atom = _ecore_x_e_vkbd_atom_get(state);
138    ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
139                                 &atom, 1);
140 }
141
142 EAPI Ecore_X_Virtual_Keyboard_State
143 ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win)
144 {
145    Ecore_X_Atom atom;
146
147    LOGFN(__FILE__, __LINE__, __FUNCTION__);
148    if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
149                                      &atom, 1))
150      return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
151    return _ecore_x_e_vkbd_state_get(atom);
152 }
153
154 EAPI void
155 ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state)
156 {
157    LOGFN(__FILE__, __LINE__, __FUNCTION__);
158    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
159                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
160                                  _ecore_x_e_vkbd_atom_get(state),
161                                  0, 0, 0, 0);
162 }
163
164 static Ecore_X_Atom 
165 _ecore_x_e_illume_atom_get(Ecore_X_Illume_Mode mode) 
166 {
167    switch (mode) 
168      {
169       case ECORE_X_ILLUME_MODE_SINGLE:
170         return ECORE_X_ATOM_E_ILLUME_MODE_SINGLE;
171       case ECORE_X_ILLUME_MODE_DUAL_TOP:
172         return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP;
173       case ECORE_X_ILLUME_MODE_DUAL_LEFT:
174         return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT;
175       default:
176         return ECORE_X_ILLUME_MODE_UNKNOWN;;
177      }
178    return ECORE_X_ILLUME_MODE_UNKNOWN;
179 }
180
181 static Ecore_X_Illume_Mode 
182 _ecore_x_e_illume_mode_get(Ecore_X_Atom atom) 
183 {
184    if (atom == ECORE_X_ATOM_E_ILLUME_MODE_SINGLE)
185      return ECORE_X_ILLUME_MODE_SINGLE;
186    if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP)
187      return ECORE_X_ILLUME_MODE_DUAL_TOP;
188    if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT)
189      return ECORE_X_ILLUME_MODE_DUAL_LEFT;
190    return ECORE_X_ILLUME_MODE_UNKNOWN;
191 }
192
193 EAPI void 
194 ecore_x_e_illume_zone_set(Ecore_X_Window win, Ecore_X_Window zone) 
195 {
196    LOGFN(__FILE__, __LINE__, __FUNCTION__);
197    ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE, 
198                                   &zone, 1);
199 }
200
201 EAPI Ecore_X_Window 
202 ecore_x_e_illume_zone_get(Ecore_X_Window win) 
203 {
204    Ecore_X_Window zone;
205
206    LOGFN(__FILE__, __LINE__, __FUNCTION__);
207    if (!ecore_x_window_prop_window_get(win, ECORE_X_ATOM_E_ILLUME_ZONE, 
208                                        &zone, 1)) return 0;
209    return zone;
210 }
211
212 EAPI void 
213 ecore_x_e_illume_zone_list_set(Ecore_X_Window win, Ecore_X_Window *zones, unsigned int n_zones) 
214 {
215    LOGFN(__FILE__, __LINE__, __FUNCTION__);
216    ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE_LIST, 
217                                   zones, n_zones);
218 }
219
220 EAPI void 
221 ecore_x_e_illume_conformant_set(Ecore_X_Window win, unsigned int is_conformant) 
222 {
223    LOGFN(__FILE__, __LINE__, __FUNCTION__);
224    ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT,
225                                   &is_conformant, 1);
226 }
227
228 EAPI int 
229 ecore_x_e_illume_conformant_get(Ecore_X_Window win) 
230 {
231    unsigned int val = 0;
232
233    LOGFN(__FILE__, __LINE__, __FUNCTION__);
234    if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT, 
235                                        &val, 1))
236      return 0;
237    return val;
238 }
239
240 EAPI void 
241 ecore_x_e_illume_mode_set(Ecore_X_Window win, Ecore_X_Illume_Mode mode) 
242 {
243    Ecore_X_Atom atom = 0;
244
245    LOGFN(__FILE__, __LINE__, __FUNCTION__);
246    atom = _ecore_x_e_illume_atom_get(mode);
247    ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_MODE,
248                                   &atom, 1);
249 }
250
251 EAPI Ecore_X_Illume_Mode 
252 ecore_x_e_illume_mode_get(Ecore_X_Window win) 
253 {
254    Ecore_X_Atom atom = 0;
255
256    LOGFN(__FILE__, __LINE__, __FUNCTION__);
257    if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_ILLUME_MODE, &atom, 1))
258      return ECORE_X_ILLUME_MODE_UNKNOWN;
259    return _ecore_x_e_illume_mode_get(atom);
260 }
261
262 EAPI void 
263 ecore_x_e_illume_mode_send(Ecore_X_Window win, Ecore_X_Illume_Mode mode) 
264 {
265    LOGFN(__FILE__, __LINE__, __FUNCTION__);
266    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_MODE,
267                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
268                                  _ecore_x_e_illume_atom_get(mode),
269                                  0, 0, 0, 0);
270 }
271
272 EAPI void 
273 ecore_x_e_illume_focus_back_send(Ecore_X_Window win) 
274 {
275    LOGFN(__FILE__, __LINE__, __FUNCTION__);
276    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_BACK,
277                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
278                                  1, 0, 0, 0, 0);
279 }
280
281 EAPI void 
282 ecore_x_e_illume_focus_forward_send(Ecore_X_Window win) 
283 {
284    LOGFN(__FILE__, __LINE__, __FUNCTION__);
285    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_FORWARD,
286                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
287                                  1, 0, 0, 0, 0);
288 }
289
290 EAPI void 
291 ecore_x_e_illume_focus_home_send(Ecore_X_Window win) 
292 {
293    LOGFN(__FILE__, __LINE__, __FUNCTION__);
294    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_HOME,
295                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
296                                  1, 0, 0, 0, 0);
297 }
298
299 EAPI void 
300 ecore_x_e_illume_close_send(Ecore_X_Window win) 
301 {
302    LOGFN(__FILE__, __LINE__, __FUNCTION__);
303    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_CLOSE,
304                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, 
305                                  1, 0, 0, 0, 0);
306 }
307
308 EAPI void 
309 ecore_x_e_illume_home_new_send(Ecore_X_Window win) 
310 {
311    LOGFN(__FILE__, __LINE__, __FUNCTION__);
312    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_NEW,
313                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, 
314                                  1, 0, 0, 0, 0);
315 }
316
317 EAPI void 
318 ecore_x_e_illume_home_del_send(Ecore_X_Window win) 
319 {
320    LOGFN(__FILE__, __LINE__, __FUNCTION__);
321    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_DEL,
322                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, 
323                                  1, 0, 0, 0, 0);
324 }
325
326 EAPI void 
327 ecore_x_e_illume_drag_set(Ecore_X_Window win, unsigned int drag) 
328 {
329    LOGFN(__FILE__, __LINE__, __FUNCTION__);
330    ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG, &drag, 1);
331 }
332
333 EAPI int 
334 ecore_x_e_illume_drag_get(Ecore_X_Window win) 
335 {
336    unsigned int val = 0;
337
338    LOGFN(__FILE__, __LINE__, __FUNCTION__);
339    if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG, &val, 1))
340      return 0;
341    return val;
342 }
343
344 EAPI void 
345 ecore_x_e_illume_drag_locked_set(Ecore_X_Window win, unsigned int is_locked) 
346 {
347    LOGFN(__FILE__, __LINE__, __FUNCTION__);
348    ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED, 
349                                   &is_locked, 1);
350 }
351
352 EAPI int 
353 ecore_x_e_illume_drag_locked_get(Ecore_X_Window win) 
354 {
355    unsigned int val = 0;
356
357    LOGFN(__FILE__, __LINE__, __FUNCTION__);
358    if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED, 
359                                        &val, 1))
360      return 0;
361    return val;
362 }
363
364 EAPI void 
365 ecore_x_e_illume_drag_start_send(Ecore_X_Window win) 
366 {
367    LOGFN(__FILE__, __LINE__, __FUNCTION__);
368    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_START,
369                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
370                                  1, 0, 0, 0, 0);
371 }
372
373 EAPI void 
374 ecore_x_e_illume_drag_end_send(Ecore_X_Window win) 
375 {
376    LOGFN(__FILE__, __LINE__, __FUNCTION__);
377    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_END,
378                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
379                                  1, 0, 0, 0, 0);
380 }
381
382 EAPI void 
383 ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win, int x, int y, int w, int h) 
384 {
385    unsigned int geom[4];
386
387    LOGFN(__FILE__, __LINE__, __FUNCTION__);
388    geom[0] = x;
389    geom[1] = y;
390    geom[2] = w;
391    geom[3] = h;
392    ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY, 
393                                   geom, 4);
394 }
395
396 EAPI int 
397 ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h) 
398 {
399    int ret = 0;
400    unsigned int geom[4];
401
402    LOGFN(__FILE__, __LINE__, __FUNCTION__);
403    ret = 
404      ecore_x_window_prop_card32_get(win, 
405                                     ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY, 
406                                     geom, 4);
407    if (ret != 4) return 0;
408    if (x) *x = geom[0];
409    if (y) *y = geom[1];
410    if (w) *w = geom[2];
411    if (h) *h = geom[3];
412    return 1;
413 }
414
415 EAPI void 
416 ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win, int x, int y, int w, int h) 
417 {
418    unsigned int geom[4];
419
420    LOGFN(__FILE__, __LINE__, __FUNCTION__);
421    geom[0] = x;
422    geom[1] = y;
423    geom[2] = w;
424    geom[3] = h;
425    ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY, 
426                                   geom, 4);
427 }
428
429 EAPI int 
430 ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h) 
431 {
432    int ret = 0;
433    unsigned int geom[4];
434
435    LOGFN(__FILE__, __LINE__, __FUNCTION__);
436    ret = 
437      ecore_x_window_prop_card32_get(win, 
438                                     ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY, 
439                                     geom, 4);
440    if (ret != 4) return 0;
441    if (x) *x = geom[0];
442    if (y) *y = geom[1];
443    if (w) *w = geom[2];
444    if (h) *h = geom[3];
445    return 1;
446 }
447
448 EAPI void 
449 ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win, int x, int y, int w, int h) 
450 {
451    unsigned int geom[4];
452
453    LOGFN(__FILE__, __LINE__, __FUNCTION__);
454    geom[0] = x;
455    geom[1] = y;
456    geom[2] = w;
457    geom[3] = h;
458    ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY, 
459                                   geom, 4);
460 }
461
462 EAPI int 
463 ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h) 
464 {
465    int ret = 0;
466    unsigned int geom[4];
467
468    LOGFN(__FILE__, __LINE__, __FUNCTION__);
469    ret = 
470      ecore_x_window_prop_card32_get(win, 
471                                     ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY, 
472                                     geom, 4);
473    if (ret != 4) return 0;
474    if (x) *x = geom[0];
475    if (y) *y = geom[1];
476    if (w) *w = geom[2];
477    if (h) *h = geom[3];
478    return 1;
479 }
480
481 static Ecore_X_Atom
482 _ecore_x_e_quickpanel_atom_get(Ecore_X_Illume_Quickpanel_State state)
483 {
484    switch (state) 
485      {
486       case ECORE_X_ILLUME_QUICKPANEL_STATE_ON:
487         return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON;
488       case ECORE_X_ILLUME_QUICKPANEL_STATE_OFF:
489         return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF;
490       default:
491         return 0;
492      }
493    return 0;
494 }
495
496 static Ecore_X_Illume_Quickpanel_State
497 _ecore_x_e_quickpanel_state_get(Ecore_X_Atom atom)
498 {
499    if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) 
500      return ECORE_X_ILLUME_QUICKPANEL_STATE_ON;
501    if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF)
502      return ECORE_X_ILLUME_QUICKPANEL_STATE_OFF;
503    return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN;
504 }
505
506 EAPI void 
507 ecore_x_e_illume_quickpanel_set(Ecore_X_Window win, unsigned int is_quickpanel) 
508 {
509    LOGFN(__FILE__, __LINE__, __FUNCTION__);
510    ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL,
511                                   &is_quickpanel, 1);
512 }
513
514 EAPI int 
515 ecore_x_e_illume_quickpanel_get(Ecore_X_Window win) 
516 {
517    unsigned int val = 0;
518
519    LOGFN(__FILE__, __LINE__, __FUNCTION__);
520    if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL, 
521                                        &val, 1))
522      return 0;
523    return val;
524 }
525
526 EAPI void 
527 ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win, Ecore_X_Illume_Quickpanel_State state) 
528 {
529    Ecore_X_Atom atom = 0;
530
531    LOGFN(__FILE__, __LINE__, __FUNCTION__);
532    atom = _ecore_x_e_quickpanel_atom_get(state);
533    ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
534                                 &atom, 1);
535 }
536
537 EAPI Ecore_X_Illume_Quickpanel_State 
538 ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win) 
539 {
540    Ecore_X_Atom atom;
541
542    LOGFN(__FILE__, __LINE__, __FUNCTION__);
543    if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
544                                      &atom, 1))
545      return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN;
546    return _ecore_x_e_quickpanel_state_get(atom);
547 }
548
549 EAPI void 
550 ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win, Ecore_X_Illume_Quickpanel_State state) 
551 {
552    LOGFN(__FILE__, __LINE__, __FUNCTION__);
553    ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
554                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
555                                  _ecore_x_e_quickpanel_atom_get(state),
556                                  0, 0, 0, 0);
557 }
558
559 EAPI void 
560 ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win) 
561 {
562    LOGFN(__FILE__, __LINE__, __FUNCTION__);
563    ecore_x_client_message32_send(win, 
564                                  ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE_TOGGLE,
565                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
566                                  0, 0, 0, 0, 0);
567 }
568
569 EAPI void 
570 ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win, unsigned int priority) 
571 {
572    LOGFN(__FILE__, __LINE__, __FUNCTION__);
573    ecore_x_window_prop_card32_set(win, 
574                                   ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR, 
575                                   &priority, 1);
576 }
577
578 EAPI int 
579 ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win) 
580 {
581    unsigned int val = 0;
582
583    LOGFN(__FILE__, __LINE__, __FUNCTION__);
584    if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR, 
585                                        &val, 1))
586      return 0;
587    return val;
588 }
589
590 EAPI void 
591 ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win, unsigned int priority) 
592 {
593    LOGFN(__FILE__, __LINE__, __FUNCTION__);
594    ecore_x_window_prop_card32_set(win, 
595                                   ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR, 
596                                   &priority, 1);
597 }
598
599 EAPI int 
600 ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win) 
601 {
602    unsigned int val = 0;
603
604    LOGFN(__FILE__, __LINE__, __FUNCTION__);
605    if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR, 
606                                        &val, 1))
607      return 0;
608    return val;
609 }
610
611 EAPI void 
612 ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win, unsigned int zone) 
613 {
614    LOGFN(__FILE__, __LINE__, __FUNCTION__);
615    ecore_x_window_prop_card32_set(win, 
616                                   ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE, 
617                                   &zone, 1);
618 }
619
620 EAPI int 
621 ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win) 
622 {
623    unsigned int val = 0;
624
625    LOGFN(__FILE__, __LINE__, __FUNCTION__);
626    if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE, 
627                                        &val, 1))
628      return 0;
629    return val;
630 }
631
632 EAPI void 
633 ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win) 
634 {
635    LOGFN(__FILE__, __LINE__, __FUNCTION__);
636    ecore_x_client_message32_send(win, 
637                                  ECORE_X_ATOM_E_ILLUME_QUICKPANEL_POSITION_UPDATE,
638                                  ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
639                                  1, 0, 0, 0, 0);
640 }
641
642 EAPI void 
643 ecore_x_e_comp_sync_counter_set(Ecore_X_Window win, Ecore_X_Sync_Counter counter)
644 {
645    LOGFN(__FILE__, __LINE__, __FUNCTION__);
646    if (counter)
647      ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
648                                   ECORE_X_ATOM_CARDINAL, &counter, 1);
649    else
650      ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER);
651 }
652
653 EAPI Ecore_X_Sync_Counter
654 ecore_x_e_comp_sync_counter_get(Ecore_X_Window win)
655 {
656    int ret = 0;
657    Ecore_X_Sync_Counter counter = 0;
658
659    LOGFN(__FILE__, __LINE__, __FUNCTION__);
660    ret = 
661      ecore_x_window_prop_xid_get(win, 
662                                  ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
663                                  ECORE_X_ATOM_CARDINAL,
664                                  &counter, 1);
665    if (ret != 1) return 0;
666    return counter;
667 }
668
669 EAPI void
670 ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root, Ecore_X_Window win)
671 {
672    XEvent xev;
673    
674    LOGFN(__FILE__, __LINE__, __FUNCTION__);
675    if (!root) root = DefaultRootWindow(_ecore_x_disp);
676    xev.xclient.type = ClientMessage;
677    xev.xclient.display = _ecore_x_disp;
678    xev.xclient.window = win;
679    xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
680    xev.xclient.format = 32;
681    xev.xclient.data.l[0] = win;
682    xev.xclient.data.l[1] = 0; // later
683    xev.xclient.data.l[2] = 0; // later
684    xev.xclient.data.l[3] = 0; // later
685    xev.xclient.data.l[4] = 0; // later
686    
687    XSendEvent(_ecore_x_disp, root, False,
688               SubstructureRedirectMask | SubstructureNotifyMask, 
689               &xev);
690 }
691
692 EAPI void
693 ecore_x_e_comp_sync_supported_set(Ecore_X_Window root, Eina_Bool enabled)
694 {
695    Ecore_X_Window win;
696
697    if (!root) root = DefaultRootWindow(_ecore_x_disp);
698    LOGFN(__FILE__, __LINE__, __FUNCTION__);
699    if (enabled)
700      {
701         win = ecore_x_window_new(root, 1, 2, 3, 4);
702         ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
703                                      ECORE_X_ATOM_WINDOW, &win, 1);
704         ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
705                                      ECORE_X_ATOM_WINDOW, &win, 1);
706      }
707    else
708      {
709         int ret;
710         
711         ret = 
712           ecore_x_window_prop_xid_get(root, 
713                                       ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
714                                       ECORE_X_ATOM_WINDOW,
715                                       &win, 1);
716         if ((ret == 1) && (win))
717           {
718              ecore_x_window_prop_property_del(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED);
719              ecore_x_window_free(win);
720           }
721      }
722 }
723
724 EAPI Eina_Bool
725 ecore_x_e_comp_sync_supported_get(Ecore_X_Window root)
726 {
727    Ecore_X_Window win, win2;
728    int ret;
729    
730    LOGFN(__FILE__, __LINE__, __FUNCTION__);
731    if (!root) root = DefaultRootWindow(_ecore_x_disp);
732    ret = 
733      ecore_x_window_prop_xid_get(root, 
734                                  ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
735                                  ECORE_X_ATOM_WINDOW,
736                                  &win, 1);
737    if ((ret == 1) && (win))
738      {
739         ret = 
740           ecore_x_window_prop_xid_get(win, 
741                                       ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
742                                       ECORE_X_ATOM_WINDOW,
743                                       &win2, 1);
744         if ((ret == 1) && (win2 == win))
745           {
746              return 1;
747           }
748      }
749    return 0;
750 }
751
752 EAPI void
753 ecore_x_e_comp_sync_begin_send(Ecore_X_Window win)
754 {
755    XEvent xev;
756    
757    LOGFN(__FILE__, __LINE__, __FUNCTION__);
758    xev.xclient.type = ClientMessage;
759    xev.xclient.display = _ecore_x_disp;
760    xev.xclient.window = win;
761    xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_BEGIN;
762    xev.xclient.format = 32;
763    xev.xclient.data.l[0] = win;
764    xev.xclient.data.l[1] = 0; // later
765    xev.xclient.data.l[2] = 0; // later
766    xev.xclient.data.l[3] = 0; // later
767    xev.xclient.data.l[4] = 0; // later
768    
769    XSendEvent(_ecore_x_disp, win, False,
770               NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, 
771               &xev);
772 }
773
774 EAPI void
775 ecore_x_e_comp_sync_end_send(Ecore_X_Window win)
776 {
777    XEvent xev;
778    
779    LOGFN(__FILE__, __LINE__, __FUNCTION__);
780    xev.xclient.type = ClientMessage;
781    xev.xclient.display = _ecore_x_disp;
782    xev.xclient.window = win;
783    xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_END;
784    xev.xclient.format = 32;
785    xev.xclient.data.l[0] = win;
786    xev.xclient.data.l[1] = 0; // later
787    xev.xclient.data.l[2] = 0; // later
788    xev.xclient.data.l[3] = 0; // later
789    xev.xclient.data.l[4] = 0; // later
790    
791    XSendEvent(_ecore_x_disp, win, False,
792               NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, 
793               &xev);
794 }
795
796 EAPI void
797 ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win)
798 {
799    XEvent xev;
800    
801    LOGFN(__FILE__, __LINE__, __FUNCTION__);
802    xev.xclient.type = ClientMessage;
803    xev.xclient.display = _ecore_x_disp;
804    xev.xclient.window = win;
805    xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_CANCEL;
806    xev.xclient.format = 32;
807    xev.xclient.data.l[0] = win;
808    xev.xclient.data.l[1] = 0; // later
809    xev.xclient.data.l[2] = 0; // later
810    xev.xclient.data.l[3] = 0; // later
811    xev.xclient.data.l[4] = 0; // later
812    
813    XSendEvent(_ecore_x_disp, win, False,
814               NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, 
815               &xev);
816 }
817
818 EAPI void
819 ecore_x_e_comp_flush_send(Ecore_X_Window win)
820 {
821    XEvent xev;
822    
823    LOGFN(__FILE__, __LINE__, __FUNCTION__);
824    xev.xclient.type = ClientMessage;
825    xev.xclient.display = _ecore_x_disp;
826    xev.xclient.window = win;
827    xev.xclient.message_type = ECORE_X_ATOM_E_COMP_FLUSH;
828    xev.xclient.format = 32;
829    xev.xclient.data.l[0] = win;
830    xev.xclient.data.l[1] = 0; // later
831    xev.xclient.data.l[2] = 0; // later
832    xev.xclient.data.l[3] = 0; // later
833    xev.xclient.data.l[4] = 0; // later
834    
835    XSendEvent(_ecore_x_disp, win, False,
836               NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, 
837               &xev);
838 }
839
840 EAPI void
841 ecore_x_e_comp_dump_send(Ecore_X_Window win)
842 {
843    XEvent xev;
844    
845    LOGFN(__FILE__, __LINE__, __FUNCTION__);
846    xev.xclient.type = ClientMessage;
847    xev.xclient.display = _ecore_x_disp;
848    xev.xclient.window = win;
849    xev.xclient.message_type = ECORE_X_ATOM_E_COMP_DUMP;
850    xev.xclient.format = 32;
851    xev.xclient.data.l[0] = win;
852    xev.xclient.data.l[1] = 0; // later
853    xev.xclient.data.l[2] = 0; // later
854    xev.xclient.data.l[3] = 0; // later
855    xev.xclient.data.l[4] = 0; // later
856    
857    XSendEvent(_ecore_x_disp, win, False,
858               NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, 
859               &xev);
860 }