aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c')
-rw-r--r--libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c1060
1 files changed, 1060 insertions, 0 deletions
diff --git a/libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c b/libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c
new file mode 100644
index 0000000..d357c9b
--- /dev/null
+++ b/libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c
@@ -0,0 +1,1060 @@
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
14EAPI void
15ecore_x_e_init(void)
16{
17} /* ecore_x_e_init */
18
19EAPI void
20ecore_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} /* ecore_x_e_frame_size_set */
35
36EAPI void
37ecore_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} /* ecore_x_e_virtual_keyboard_set */
44
45EAPI Eina_Bool
46ecore_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} /* ecore_x_e_virtual_keyboard_get */
57
58static 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} /* _ecore_x_e_vkbd_state_get */
108
109static 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 } /* switch */
161 return 0;
162} /* _ecore_x_e_vkbd_atom_get */
163
164EAPI void
165ecore_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} /* ecore_x_e_virtual_keyboard_state_set */
175
176EAPI Ecore_X_Virtual_Keyboard_State
177ecore_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} /* ecore_x_e_virtual_keyboard_state_get */
188
189EAPI void
190ecore_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} /* ecore_x_e_virtual_keyboard_state_send */
199
200static 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 } /* switch */
217 return ECORE_X_ILLUME_MODE_UNKNOWN;
218} /* _ecore_x_e_illume_atom_get */
219
220static 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} /* _ecore_x_e_illume_mode_get */
234
235EAPI void
236ecore_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} /* ecore_x_e_illume_zone_set */
243
244EAPI Ecore_X_Window
245ecore_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} /* ecore_x_e_illume_zone_get */
256
257EAPI void
258ecore_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} /* ecore_x_e_illume_zone_list_set */
266
267EAPI void
268ecore_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} /* ecore_x_e_illume_conformant_set */
275
276EAPI Eina_Bool
277ecore_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} /* ecore_x_e_illume_conformant_get */
288
289EAPI void
290ecore_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} /* ecore_x_e_illume_mode_set */
300
301EAPI Ecore_X_Illume_Mode
302ecore_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} /* ecore_x_e_illume_mode_get */
312
313EAPI void
314ecore_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} /* ecore_x_e_illume_mode_send */
323
324EAPI void
325ecore_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} /* ecore_x_e_illume_focus_back_send */
332
333EAPI void
334ecore_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} /* ecore_x_e_illume_focus_forward_send */
341
342EAPI void
343ecore_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} /* ecore_x_e_illume_focus_home_send */
350
351EAPI void
352ecore_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} /* ecore_x_e_illume_close_send */
359
360EAPI void
361ecore_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} /* ecore_x_e_illume_home_new_send */
368
369EAPI void
370ecore_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} /* ecore_x_e_illume_home_del_send */
377
378EAPI void
379ecore_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} /* ecore_x_e_illume_drag_set */
385
386EAPI Eina_Bool
387ecore_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} /* ecore_x_e_illume_drag_get */
397
398EAPI void
399ecore_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} /* ecore_x_e_illume_drag_locked_set */
406
407EAPI Eina_Bool
408ecore_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} /* ecore_x_e_illume_drag_locked_get */
419
420EAPI void
421ecore_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} /* ecore_x_e_illume_drag_start_send */
428
429EAPI void
430ecore_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} /* ecore_x_e_illume_drag_end_send */
437
438EAPI void
439ecore_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} /* ecore_x_e_illume_indicator_geometry_set */
455
456EAPI Eina_Bool
457ecore_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} /* ecore_x_e_illume_indicator_geometry_get */
488
489EAPI void
490ecore_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} /* ecore_x_e_illume_softkey_geometry_set */
506
507EAPI Eina_Bool
508ecore_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} /* ecore_x_e_illume_softkey_geometry_get */
539
540EAPI void
541ecore_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} /* ecore_x_e_illume_keyboard_geometry_set */
557
558EAPI Eina_Bool
559ecore_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} /* ecore_x_e_illume_keyboard_geometry_get */
590
591static 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 } /* switch */
605 return 0;
606} /* _ecore_x_e_quickpanel_atom_get */
607
608static 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} /* _ecore_x_e_quickpanel_state_get */
619
620EAPI void
621ecore_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} /* ecore_x_e_illume_quickpanel_set */
628
629EAPI Eina_Bool
630ecore_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} /* ecore_x_e_illume_quickpanel_get */
641
642EAPI void
643ecore_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} /* ecore_x_e_illume_quickpanel_state_set */
653
654EAPI Ecore_X_Illume_Quickpanel_State
655ecore_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} /* ecore_x_e_illume_quickpanel_state_get */
667
668EAPI void
669ecore_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} /* ecore_x_e_illume_quickpanel_state_send */
678
679EAPI void
680ecore_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} /* ecore_x_e_illume_quickpanel_state_toggle */
688
689EAPI void
690ecore_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} /* ecore_x_e_illume_quickpanel_priority_major_set */
698
699EAPI int
700ecore_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} /* ecore_x_e_illume_quickpanel_priority_major_get */
712
713EAPI void
714ecore_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} /* ecore_x_e_illume_quickpanel_priority_minor_set */
722
723EAPI int
724ecore_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} /* ecore_x_e_illume_quickpanel_priority_minor_get */
736
737EAPI void
738ecore_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} /* ecore_x_e_illume_quickpanel_zone_set */
746
747EAPI int
748ecore_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} /* ecore_x_e_illume_quickpanel_zone_get */
760
761EAPI void
762ecore_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} /* ecore_x_e_illume_quickpanel_position_update_send */
770
771EAPI void
772ecore_x_e_comp_sync_counter_set(Ecore_X_Window win,
773 Ecore_X_Sync_Counter counter)
774{
775 LOGFN(__FILE__, __LINE__, __FUNCTION__);
776 if (counter)
777 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
778 ECORE_X_ATOM_CARDINAL, &counter, 1);
779 else
780 ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER);
781} /* ecore_x_e_comp_sync_counter_set */
782
783EAPI Ecore_X_Sync_Counter
784ecore_x_e_comp_sync_counter_get(Ecore_X_Window win)
785{
786 int ret = 0;
787 Ecore_X_Sync_Counter counter = 0;
788
789 LOGFN(__FILE__, __LINE__, __FUNCTION__);
790 ret =
791 ecore_x_window_prop_xid_get(win,
792 ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
793 ECORE_X_ATOM_CARDINAL,
794 &counter, 1);
795 if (ret != 1)
796 return 0;
797
798 return counter;
799} /* ecore_x_e_comp_sync_counter_get */
800
801EAPI void
802ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root,
803 Ecore_X_Window win)
804{
805 XEvent xev;
806
807 LOGFN(__FILE__, __LINE__, __FUNCTION__);
808 if (!root)
809 root = DefaultRootWindow(_ecore_x_disp);
810
811 xev.xclient.type = ClientMessage;
812 xev.xclient.display = _ecore_x_disp;
813 xev.xclient.window = win;
814 xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
815 xev.xclient.format = 32;
816 xev.xclient.data.l[0] = win;
817 xev.xclient.data.l[1] = 0; // version
818 xev.xclient.data.l[2] = 0; // later
819 xev.xclient.data.l[3] = 0; // later
820 xev.xclient.data.l[4] = 0; // later
821
822 XSendEvent(_ecore_x_disp, root, False,
823 SubstructureRedirectMask | SubstructureNotifyMask,
824 &xev);
825} /* ecore_x_e_comp_sync_draw_done_send */
826
827EAPI void
828ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root,
829 Ecore_X_Window win,
830 int w,
831 int h)
832{
833 XEvent xev;
834
835 LOGFN(__FILE__, __LINE__, __FUNCTION__);
836 if (!root)
837 root = DefaultRootWindow(_ecore_x_disp);
838
839 xev.xclient.type = ClientMessage;
840 xev.xclient.display = _ecore_x_disp;
841 xev.xclient.window = win;
842 xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
843 xev.xclient.format = 32;
844 xev.xclient.data.l[0] = win;
845 xev.xclient.data.l[1] = 1; // version
846 xev.xclient.data.l[2] = w; // win width at draw time
847 xev.xclient.data.l[3] = h; // win height at draw time
848 xev.xclient.data.l[4] = 0; // later
849
850 XSendEvent(_ecore_x_disp, root, False,
851 SubstructureRedirectMask | SubstructureNotifyMask,
852 &xev);
853} /* ecore_x_e_comp_sync_draw_done_send */
854
855EAPI void
856ecore_x_e_comp_sync_supported_set(Ecore_X_Window root,
857 Eina_Bool enabled)
858{
859 Ecore_X_Window win;
860
861 if (!root)
862 root = DefaultRootWindow(_ecore_x_disp);
863
864 LOGFN(__FILE__, __LINE__, __FUNCTION__);
865 if (enabled)
866 {
867 win = ecore_x_window_new(root, 1, 2, 3, 4);
868 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
869 ECORE_X_ATOM_WINDOW, &win, 1);
870 ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
871 ECORE_X_ATOM_WINDOW, &win, 1);
872 }
873 else
874 {
875 int ret;
876
877 ret =
878 ecore_x_window_prop_xid_get(root,
879 ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
880 ECORE_X_ATOM_WINDOW,
881 &win, 1);
882 if ((ret == 1) && (win))
883 {
884 ecore_x_window_prop_property_del(
885 root,
886 ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED);
887 ecore_x_window_free(win);
888 }
889 }
890} /* ecore_x_e_comp_sync_supported_set */
891
892EAPI Eina_Bool
893ecore_x_e_comp_sync_supported_get(Ecore_X_Window root)
894{
895 Ecore_X_Window win, win2;
896 int ret;
897
898 LOGFN(__FILE__, __LINE__, __FUNCTION__);
899 if (!root)
900 root = DefaultRootWindow(_ecore_x_disp);
901
902 ret =
903 ecore_x_window_prop_xid_get(root,
904 ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
905 ECORE_X_ATOM_WINDOW,
906 &win, 1);
907 if ((ret == 1) && (win))
908 {
909 ret =
910 ecore_x_window_prop_xid_get(win,
911 ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
912 ECORE_X_ATOM_WINDOW,
913 &win2, 1);
914 if ((ret == 1) && (win2 == win))
915 return EINA_TRUE;
916 }
917
918 return EINA_FALSE;
919} /* ecore_x_e_comp_sync_supported_get */
920
921EAPI void
922ecore_x_e_comp_sync_begin_send(Ecore_X_Window win)
923{
924 XEvent xev;
925
926 LOGFN(__FILE__, __LINE__, __FUNCTION__);
927 xev.xclient.type = ClientMessage;
928 xev.xclient.display = _ecore_x_disp;
929 xev.xclient.window = win;
930 xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_BEGIN;
931 xev.xclient.format = 32;
932 xev.xclient.data.l[0] = win;
933 xev.xclient.data.l[1] = 0; // later
934 xev.xclient.data.l[2] = 0; // later
935 xev.xclient.data.l[3] = 0; // later
936 xev.xclient.data.l[4] = 0; // later
937
938 XSendEvent(_ecore_x_disp, win, False,
939 NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask,
940 &xev);
941} /* ecore_x_e_comp_sync_begin_send */
942
943EAPI void
944ecore_x_e_comp_sync_end_send(Ecore_X_Window win)
945{
946 XEvent xev;
947
948 LOGFN(__FILE__, __LINE__, __FUNCTION__);
949 xev.xclient.type = ClientMessage;
950 xev.xclient.display = _ecore_x_disp;
951 xev.xclient.window = win;
952 xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_END;
953 xev.xclient.format = 32;
954 xev.xclient.data.l[0] = win;
955 xev.xclient.data.l[1] = 0; // later
956 xev.xclient.data.l[2] = 0; // later
957 xev.xclient.data.l[3] = 0; // later
958 xev.xclient.data.l[4] = 0; // later
959
960 XSendEvent(_ecore_x_disp, win, False,
961 NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask,
962 &xev);
963} /* ecore_x_e_comp_sync_end_send */
964
965EAPI void
966ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win)
967{
968 XEvent xev;
969
970 LOGFN(__FILE__, __LINE__, __FUNCTION__);
971 xev.xclient.type = ClientMessage;
972 xev.xclient.display = _ecore_x_disp;
973 xev.xclient.window = win;
974 xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_CANCEL;
975 xev.xclient.format = 32;
976 xev.xclient.data.l[0] = win;
977 xev.xclient.data.l[1] = 0; // later
978 xev.xclient.data.l[2] = 0; // later
979 xev.xclient.data.l[3] = 0; // later
980 xev.xclient.data.l[4] = 0; // later
981
982 XSendEvent(_ecore_x_disp, win, False,
983 NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask,
984 &xev);
985} /* ecore_x_e_comp_sync_cancel_send */
986
987EAPI void
988ecore_x_e_comp_flush_send(Ecore_X_Window win)
989{
990 XEvent xev;
991
992 LOGFN(__FILE__, __LINE__, __FUNCTION__);
993 xev.xclient.type = ClientMessage;
994 xev.xclient.display = _ecore_x_disp;
995 xev.xclient.window = win;
996 xev.xclient.message_type = ECORE_X_ATOM_E_COMP_FLUSH;
997 xev.xclient.format = 32;
998 xev.xclient.data.l[0] = win;
999 xev.xclient.data.l[1] = 0; // later
1000 xev.xclient.data.l[2] = 0; // later
1001 xev.xclient.data.l[3] = 0; // later
1002 xev.xclient.data.l[4] = 0; // later
1003
1004 XSendEvent(_ecore_x_disp, win, False,
1005 NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask,
1006 &xev);
1007} /* ecore_x_e_comp_flush_send */
1008
1009EAPI void
1010ecore_x_e_comp_dump_send(Ecore_X_Window win)
1011{
1012 XEvent xev;
1013
1014 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1015 xev.xclient.type = ClientMessage;
1016 xev.xclient.display = _ecore_x_disp;
1017 xev.xclient.window = win;
1018 xev.xclient.message_type = ECORE_X_ATOM_E_COMP_DUMP;
1019 xev.xclient.format = 32;
1020 xev.xclient.data.l[0] = win;
1021 xev.xclient.data.l[1] = 0; // later
1022 xev.xclient.data.l[2] = 0; // later
1023 xev.xclient.data.l[3] = 0; // later
1024 xev.xclient.data.l[4] = 0; // later
1025
1026 XSendEvent(_ecore_x_disp, win, False,
1027 NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask,
1028 &xev);
1029} /* ecore_x_e_comp_dump_send */
1030
1031EAPI void
1032ecore_x_e_comp_pixmap_set(Ecore_X_Window win,
1033 Ecore_X_Pixmap pixmap)
1034{
1035 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1036 if (pixmap)
1037 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_PIXMAP,
1038 ECORE_X_ATOM_PIXMAP, &pixmap, 1);
1039 else
1040 ecore_x_window_prop_property_del(win, pixmap);
1041} /* ecore_x_e_comp_pixmap_set */
1042
1043EAPI Ecore_X_Pixmap
1044ecore_x_e_comp_pixmap_get(Ecore_X_Window win)
1045{
1046 int ret = 0;
1047 Ecore_X_Pixmap pixmap = 0;
1048
1049 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1050 ret =
1051 ecore_x_window_prop_xid_get(win,
1052 ECORE_X_ATOM_E_COMP_PIXMAP,
1053 ECORE_X_ATOM_PIXMAP,
1054 &pixmap, 1);
1055 if (ret != 1)
1056 return 0;
1057
1058 return pixmap;
1059} /* ecore_x_e_comp_pixmap_get */
1060