1 #include "ecore_xcb_private.h"
3 /* local function prototypes */
4 static Ecore_X_Atom _ecore_xcb_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state);
5 static Ecore_X_Virtual_Keyboard_State _ecore_xcb_e_vkbd_state_get(Ecore_X_Atom atom);
6 static Ecore_X_Atom _ecore_xcb_e_quickpanel_atom_get(Ecore_X_Illume_Quickpanel_State state);
7 static Ecore_X_Illume_Quickpanel_State _ecore_xcb_e_quickpanel_state_get(Ecore_X_Atom atom);
8 static Ecore_X_Atom _ecore_xcb_e_illume_atom_get(Ecore_X_Illume_Mode mode);
9 static Ecore_X_Illume_Mode _ecore_xcb_e_illume_mode_get(Ecore_X_Atom atom);
10 static Ecore_X_Atom _ecore_xcb_e_indicator_atom_get(Ecore_X_Illume_Indicator_State state);
11 static Ecore_X_Illume_Indicator_State _ecore_xcb_e_indicator_state_get(Ecore_X_Atom atom);
19 ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root,
22 xcb_client_message_event_t ev;
24 LOGFN(__FILE__, __LINE__, __FUNCTION__);
27 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
29 memset(&ev, 0, sizeof(xcb_client_message_event_t));
31 ev.response_type = XCB_CLIENT_MESSAGE;
34 ev.type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
35 ev.data.data32[0] = win;
36 ev.data.data32[1] = 0;
37 ev.data.data32[2] = 0;
38 ev.data.data32[3] = 0;
39 ev.data.data32[4] = 0;
41 xcb_send_event(_ecore_xcb_conn, 0, root,
42 (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
43 XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
48 ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root,
53 xcb_client_message_event_t ev;
55 LOGFN(__FILE__, __LINE__, __FUNCTION__);
58 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
60 memset(&ev, 0, sizeof(xcb_client_message_event_t));
62 ev.response_type = XCB_CLIENT_MESSAGE;
65 ev.type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
66 ev.data.data32[0] = win;
67 ev.data.data32[1] = 1;
68 ev.data.data32[2] = w;
69 ev.data.data32[3] = h;
70 ev.data.data32[4] = 0;
72 xcb_send_event(_ecore_xcb_conn, 0, root,
73 (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
74 XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
79 ecore_x_e_comp_sync_counter_set(Ecore_X_Window win,
80 Ecore_X_Sync_Counter counter)
82 LOGFN(__FILE__, __LINE__, __FUNCTION__);
85 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
86 ECORE_X_ATOM_CARDINAL, &counter, 1);
88 ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER);
91 EAPI Ecore_X_Sync_Counter
92 ecore_x_e_comp_sync_counter_get(Ecore_X_Window win)
94 Ecore_X_Sync_Counter counter = 0;
97 LOGFN(__FILE__, __LINE__, __FUNCTION__);
99 ret = ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
100 ECORE_X_ATOM_CARDINAL, &counter, 1);
101 if (ret != 1) return 0;
106 ecore_x_e_comp_sync_supported_get(Ecore_X_Window root)
108 Ecore_X_Window win, win2;
111 LOGFN(__FILE__, __LINE__, __FUNCTION__);
113 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
115 ecore_x_window_prop_xid_get(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
116 ECORE_X_ATOM_WINDOW, &win, 1);
117 if ((ret == 1) && (win))
120 ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
121 ECORE_X_ATOM_WINDOW, &win2, 1);
122 if ((ret == 1) && (win2 == win))
130 * @deprecated use ecore_x_e_window_available_profiles_set
133 ecore_x_e_window_profile_list_set(Ecore_X_Window win,
134 const char **profiles,
135 unsigned int num_profiles)
139 LOGFN(__FILE__, __LINE__, __FUNCTION__);
145 if ((!profiles) || (num_profiles <= 0))
146 ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST);
149 atoms = alloca(num_profiles * sizeof(Ecore_X_Atom));
150 ecore_x_atoms_get(profiles, num_profiles, atoms);
151 ecore_x_window_prop_property_set(win,
152 ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST,
153 ECORE_X_ATOM_ATOM, 32, (void *)atoms,
160 * @deprecated use ecore_x_e_window_available_profiles_get
163 ecore_x_e_window_profile_list_get(Ecore_X_Window win,
164 const char ***profiles,
167 unsigned char *data = NULL;
171 LOGFN(__FILE__, __LINE__, __FUNCTION__);
183 if (!ecore_x_window_prop_property_get(win,
184 ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST,
185 ECORE_X_ATOM_ATOM, 32, &data, &num))
193 (*profiles) = calloc(num, sizeof(char *));
205 atoms = (Ecore_X_Atom *)data;
206 for (i = 0; i < num; i++)
207 (*profiles)[i] = ecore_x_atom_name_get(atoms[i]);
217 ecore_x_e_window_profile_set(Ecore_X_Window win,
222 LOGFN(__FILE__, __LINE__, __FUNCTION__);
229 ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_WINDOW_PROFILE);
232 atom = ecore_x_atom_get(profile);
233 ecore_x_window_prop_property_set(win, ECORE_X_ATOM_E_WINDOW_PROFILE,
234 ECORE_X_ATOM_ATOM, 32, (void *)&atom, 1);
239 ecore_x_e_window_profile_get(Ecore_X_Window win)
241 Ecore_X_Atom *atom = NULL;
243 char *profile = NULL;
246 LOGFN(__FILE__, __LINE__, __FUNCTION__);
248 if (!ecore_x_window_prop_property_get(win, ECORE_X_ATOM_E_WINDOW_PROFILE,
249 ECORE_X_ATOM_ATOM, 32, &data, &num))
257 atom = (Ecore_X_Atom *)data;
260 profile = ecore_x_atom_name_get(atom[0]);
262 if (data) free(data);
268 ecore_x_e_window_profile_supported_set(Ecore_X_Window root,
273 LOGFN(__FILE__, __LINE__, __FUNCTION__);
276 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
280 win = ecore_x_window_new(root, 1, 2, 3, 4);
281 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
282 ECORE_X_ATOM_WINDOW, &win, 1);
283 ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
284 ECORE_X_ATOM_WINDOW, &win, 1);
290 ret = ecore_x_window_prop_xid_get(root,
291 ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
292 ECORE_X_ATOM_WINDOW, &win, 1);
293 if ((ret == 1) && (win))
295 ecore_x_window_prop_property_del(root,
296 ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED);
297 ecore_x_window_free(win);
303 ecore_x_e_window_profile_supported_get(Ecore_X_Window root)
305 Ecore_X_Window win, win2;
308 LOGFN(__FILE__, __LINE__, __FUNCTION__);
311 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
314 ecore_x_window_prop_xid_get(root,
315 ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
318 if ((ret == 1) && (win))
321 ecore_x_window_prop_xid_get(win,
322 ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
325 if ((ret == 1) && (win2 == win))
332 ecore_x_e_window_available_profiles_set(Ecore_X_Window win,
333 const char **profiles,
338 LOGFN(__FILE__, __LINE__, __FUNCTION__);
344 if ((!profiles) || (count <= 0))
345 ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST);
348 atoms = alloca(count * sizeof(Ecore_X_Atom));
349 ecore_x_atoms_get(profiles, count, atoms);
350 ecore_x_window_prop_property_set(win,
351 ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST,
352 ECORE_X_ATOM_ATOM, 32, (void *)atoms,
358 ecore_x_e_window_available_profiles_get(Ecore_X_Window win,
359 const char ***profiles,
362 unsigned char *data = NULL;
366 LOGFN(__FILE__, __LINE__, __FUNCTION__);
378 if (!ecore_x_window_prop_property_get(win,
379 ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST,
380 ECORE_X_ATOM_ATOM, 32, &data, &num))
388 (*profiles) = calloc(num, sizeof(char *));
400 atoms = (Ecore_X_Atom *)data;
401 for (i = 0; i < num; i++)
402 (*profiles)[i] = ecore_x_atom_name_get(atoms[i]);
412 ecore_x_e_window_profile_change_send(Ecore_X_Window root,
416 xcb_client_message_event_t ev;
419 LOGFN(__FILE__, __LINE__, __FUNCTION__);
423 root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
428 memset(&ev, 0, sizeof(xcb_client_message_event_t));
430 atom = ecore_x_atom_get(profile);
432 ev.response_type = XCB_CLIENT_MESSAGE;
435 ev.type = ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE;
436 ev.data.data32[0] = win;
437 ev.data.data32[1] = atom;
438 ev.data.data32[2] = 0; // later
439 ev.data.data32[3] = 0; // later
440 ev.data.data32[4] = 0; // later
442 xcb_send_event(_ecore_xcb_conn, 0, root,
443 (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
444 XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY),
449 ecore_x_e_window_profile_change_request_send(Ecore_X_Window win,
452 xcb_client_message_event_t ev;
455 LOGFN(__FILE__, __LINE__, __FUNCTION__);
461 memset(&ev, 0, sizeof(xcb_client_message_event_t));
463 atom = ecore_x_atom_get(profile);
465 ev.response_type = XCB_CLIENT_MESSAGE;
468 ev.type = ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE_REQUEST;
469 ev.data.data32[0] = win;
470 ev.data.data32[1] = atom;
471 ev.data.data32[2] = 0; // later
472 ev.data.data32[3] = 0; // later
473 ev.data.data32[4] = 0; // later
475 xcb_send_event(_ecore_xcb_conn, 0, win,
476 XCB_EVENT_MASK_NO_EVENT,
481 ecore_x_e_window_profile_change_done_send(Ecore_X_Window root,
485 xcb_client_message_event_t ev;
488 LOGFN(__FILE__, __LINE__, __FUNCTION__);
492 root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
497 memset(&ev, 0, sizeof(xcb_client_message_event_t));
499 atom = ecore_x_atom_get(profile);
501 ev.response_type = XCB_CLIENT_MESSAGE;
504 ev.type = ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE_DONE;
505 ev.data.data32[0] = win;
506 ev.data.data32[1] = atom;
507 ev.data.data32[2] = 0; // later
508 ev.data.data32[3] = 0; // later
509 ev.data.data32[4] = 0; // later
511 xcb_send_event(_ecore_xcb_conn, 0, root,
512 (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
513 XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY),
518 ecore_x_e_comp_sync_supported_set(Ecore_X_Window root,
523 LOGFN(__FILE__, __LINE__, __FUNCTION__);
525 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
528 win = ecore_x_window_new(root, 1, 2, 3, 4);
529 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
530 ECORE_X_ATOM_WINDOW, &win, 1);
531 ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
532 ECORE_X_ATOM_WINDOW, &win, 1);
538 ret = ecore_x_window_prop_xid_get(root,
539 ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
540 ECORE_X_ATOM_WINDOW, &win, 1);
541 if ((ret == 1) && (win))
543 ecore_x_window_prop_property_del(root,
544 ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED);
545 ecore_x_window_free(win);
551 ecore_x_e_comp_sync_begin_send(Ecore_X_Window win)
553 xcb_client_message_event_t ev;
555 LOGFN(__FILE__, __LINE__, __FUNCTION__);
558 memset(&ev, 0, sizeof(xcb_client_message_event_t));
560 ev.response_type = XCB_CLIENT_MESSAGE;
563 ev.type = ECORE_X_ATOM_E_COMP_SYNC_BEGIN;
564 ev.data.data32[0] = win;
565 ev.data.data32[1] = 0;
566 ev.data.data32[2] = 0;
567 ev.data.data32[3] = 0;
568 ev.data.data32[4] = 0;
570 xcb_send_event(_ecore_xcb_conn, 0, win,
571 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
576 ecore_x_e_comp_sync_end_send(Ecore_X_Window win)
578 xcb_client_message_event_t ev;
580 LOGFN(__FILE__, __LINE__, __FUNCTION__);
583 memset(&ev, 0, sizeof(xcb_client_message_event_t));
585 ev.response_type = XCB_CLIENT_MESSAGE;
588 ev.type = ECORE_X_ATOM_E_COMP_SYNC_END;
589 ev.data.data32[0] = win;
590 ev.data.data32[1] = 0;
591 ev.data.data32[2] = 0;
592 ev.data.data32[3] = 0;
593 ev.data.data32[4] = 0;
595 xcb_send_event(_ecore_xcb_conn, 0, win,
596 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
601 ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win)
603 xcb_client_message_event_t ev;
605 LOGFN(__FILE__, __LINE__, __FUNCTION__);
608 memset(&ev, 0, sizeof(xcb_client_message_event_t));
610 ev.response_type = XCB_CLIENT_MESSAGE;
613 ev.type = ECORE_X_ATOM_E_COMP_SYNC_CANCEL;
614 ev.data.data32[0] = win;
615 ev.data.data32[1] = 0;
616 ev.data.data32[2] = 0;
617 ev.data.data32[3] = 0;
618 ev.data.data32[4] = 0;
620 xcb_send_event(_ecore_xcb_conn, 0, win,
621 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
626 ecore_x_e_comp_flush_send(Ecore_X_Window win)
628 xcb_client_message_event_t ev;
630 LOGFN(__FILE__, __LINE__, __FUNCTION__);
633 memset(&ev, 0, sizeof(xcb_client_message_event_t));
635 ev.response_type = XCB_CLIENT_MESSAGE;
638 ev.type = ECORE_X_ATOM_E_COMP_FLUSH;
639 ev.data.data32[0] = win;
640 ev.data.data32[1] = 0;
641 ev.data.data32[2] = 0;
642 ev.data.data32[3] = 0;
643 ev.data.data32[4] = 0;
645 xcb_send_event(_ecore_xcb_conn, 0, win,
646 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
651 ecore_x_e_comp_dump_send(Ecore_X_Window win)
653 xcb_client_message_event_t ev;
655 LOGFN(__FILE__, __LINE__, __FUNCTION__);
658 memset(&ev, 0, sizeof(xcb_client_message_event_t));
660 ev.response_type = XCB_CLIENT_MESSAGE;
663 ev.type = ECORE_X_ATOM_E_COMP_DUMP;
664 ev.data.data32[0] = win;
665 ev.data.data32[1] = 0;
666 ev.data.data32[2] = 0;
667 ev.data.data32[3] = 0;
668 ev.data.data32[4] = 0;
670 xcb_send_event(_ecore_xcb_conn, 0, win,
671 XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
676 ecore_x_e_comp_pixmap_set(Ecore_X_Window win,
677 Ecore_X_Pixmap pixmap)
679 LOGFN(__FILE__, __LINE__, __FUNCTION__);
682 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_PIXMAP,
683 ECORE_X_ATOM_PIXMAP, &pixmap, 1);
685 ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_COMP_PIXMAP);
689 ecore_x_e_comp_pixmap_get(Ecore_X_Window win)
691 Ecore_X_Pixmap pixmap = 0;
694 LOGFN(__FILE__, __LINE__, __FUNCTION__);
696 ret = ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_PIXMAP,
697 ECORE_X_ATOM_PIXMAP, &pixmap, 1);
698 if (ret != 1) return 0;
703 ecore_x_e_frame_size_set(Ecore_X_Window win,
711 LOGFN(__FILE__, __LINE__, __FUNCTION__);
717 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_FRAME_SIZE, frames, 4);
720 EAPI Ecore_X_Virtual_Keyboard_State
721 ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win)
723 Ecore_X_Atom atom = 0;
725 LOGFN(__FILE__, __LINE__, __FUNCTION__);
727 if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
729 return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
731 return _ecore_xcb_e_vkbd_state_get(atom);
735 ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win,
736 Ecore_X_Virtual_Keyboard_State state)
738 Ecore_X_Atom atom = 0;
740 LOGFN(__FILE__, __LINE__, __FUNCTION__);
742 atom = _ecore_xcb_e_vkbd_atom_get(state);
743 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
748 ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win,
749 Ecore_X_Virtual_Keyboard_State state)
751 LOGFN(__FILE__, __LINE__, __FUNCTION__);
753 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
754 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
755 _ecore_xcb_e_vkbd_atom_get(state),
760 ecore_x_e_virtual_keyboard_set(Ecore_X_Window win,
761 unsigned int is_keyboard)
763 LOGFN(__FILE__, __LINE__, __FUNCTION__);
765 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
770 ecore_x_e_virtual_keyboard_get(Ecore_X_Window win)
772 unsigned int val = 0;
774 LOGFN(__FILE__, __LINE__, __FUNCTION__);
776 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
780 return val ? EINA_TRUE : EINA_FALSE;
784 ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win)
786 unsigned int val = 0;
788 LOGFN(__FILE__, __LINE__, __FUNCTION__);
790 if (!ecore_x_window_prop_card32_get(win,
791 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR,
799 ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win,
800 unsigned int priority)
802 LOGFN(__FILE__, __LINE__, __FUNCTION__);
804 ecore_x_window_prop_card32_set(win,
805 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR,
810 ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win)
812 unsigned int val = 0;
814 LOGFN(__FILE__, __LINE__, __FUNCTION__);
816 if (!ecore_x_window_prop_card32_get(win,
817 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR,
825 ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win,
826 unsigned int priority)
828 LOGFN(__FILE__, __LINE__, __FUNCTION__);
830 ecore_x_window_prop_card32_set(win,
831 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR,
836 ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win,
839 LOGFN(__FILE__, __LINE__, __FUNCTION__);
841 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE,
846 ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win)
848 unsigned int val = 0;
850 LOGFN(__FILE__, __LINE__, __FUNCTION__);
852 if (!ecore_x_window_prop_card32_get(win,
853 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE,
861 ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win)
863 LOGFN(__FILE__, __LINE__, __FUNCTION__);
865 ecore_x_client_message32_send(win,
866 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_POSITION_UPDATE,
867 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
872 ecore_x_e_illume_conformant_get(Ecore_X_Window win)
874 unsigned int val = 0;
876 LOGFN(__FILE__, __LINE__, __FUNCTION__);
878 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT,
882 return val ? EINA_TRUE : EINA_FALSE;
886 ecore_x_e_illume_conformant_set(Ecore_X_Window win,
887 unsigned int is_conformant)
889 LOGFN(__FILE__, __LINE__, __FUNCTION__);
891 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT,
896 ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win,
902 unsigned int geom[4];
904 LOGFN(__FILE__, __LINE__, __FUNCTION__);
910 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY,
915 ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win,
921 unsigned int geom[4];
923 LOGFN(__FILE__, __LINE__, __FUNCTION__);
930 if (ecore_x_window_prop_card32_get(win,
931 ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY,
944 ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win,
950 unsigned int geom[4];
952 LOGFN(__FILE__, __LINE__, __FUNCTION__);
958 ecore_x_window_prop_card32_set(win,
959 ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY,
964 ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win,
970 unsigned int geom[4];
972 LOGFN(__FILE__, __LINE__, __FUNCTION__);
979 if (ecore_x_window_prop_card32_get(win,
980 ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY,
993 ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win,
999 unsigned int geom[4];
1001 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1007 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY,
1012 ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win,
1018 unsigned int geom[4];
1020 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1027 if (ecore_x_window_prop_card32_get(win,
1028 ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY,
1032 if (x) *x = geom[0];
1033 if (y) *y = geom[1];
1034 if (w) *w = geom[2];
1035 if (h) *h = geom[3];
1041 ecore_x_e_illume_quickpanel_set(Ecore_X_Window win,
1042 unsigned int is_quickpanel)
1044 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1046 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL,
1051 ecore_x_e_illume_quickpanel_get(Ecore_X_Window win)
1053 unsigned int val = 0;
1055 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1057 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL,
1061 return val ? EINA_TRUE : EINA_FALSE;
1065 ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win,
1066 Ecore_X_Illume_Quickpanel_State state)
1068 Ecore_X_Atom atom = 0;
1070 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1072 atom = _ecore_xcb_e_quickpanel_atom_get(state);
1073 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
1077 EAPI Ecore_X_Illume_Quickpanel_State
1078 ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win)
1080 Ecore_X_Atom atom = 0;
1082 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1084 if (!ecore_x_window_prop_atom_get(win,
1085 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
1087 return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN;
1089 return _ecore_xcb_e_quickpanel_state_get(atom);
1093 ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win,
1094 Ecore_X_Illume_Quickpanel_State state)
1096 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1097 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
1098 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1099 _ecore_xcb_e_quickpanel_atom_get(state),
1104 ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win)
1106 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1107 ecore_x_client_message32_send(win,
1108 ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE_TOGGLE,
1109 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1114 _ecore_xcb_e_clipboard_atom_get(Ecore_X_Illume_Clipboard_State state)
1118 case ECORE_X_ILLUME_CLIPBOARD_STATE_ON:
1119 return ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON;
1120 case ECORE_X_ILLUME_CLIPBOARD_STATE_OFF:
1121 return ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF;
1128 static Ecore_X_Illume_Clipboard_State
1129 _ecore_xcb_e_clipboard_state_get(Ecore_X_Atom atom)
1131 if (atom == ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON)
1132 return ECORE_X_ILLUME_CLIPBOARD_STATE_ON;
1134 if (atom == ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF)
1135 return ECORE_X_ILLUME_CLIPBOARD_STATE_OFF;
1137 return ECORE_X_ILLUME_CLIPBOARD_STATE_UNKNOWN;
1141 ecore_x_e_illume_clipboard_state_set(Ecore_X_Window win,
1142 Ecore_X_Illume_Clipboard_State state)
1144 Ecore_X_Atom atom = 0;
1146 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1147 atom = _ecore_xcb_e_clipboard_atom_get(state);
1149 ecore_x_window_prop_atom_set(win,
1150 ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE,
1154 EAPI Ecore_X_Illume_Clipboard_State
1155 ecore_x_e_illume_clipboard_state_get(Ecore_X_Window win)
1157 Ecore_X_Atom atom = 0;
1159 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1161 if (!ecore_x_window_prop_atom_get(win,
1162 ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE,
1164 return ECORE_X_ILLUME_CLIPBOARD_STATE_UNKNOWN;
1165 return _ecore_xcb_e_clipboard_state_get(atom);
1169 ecore_x_e_illume_clipboard_geometry_set(Ecore_X_Window win,
1170 int x, int y, int w, int h)
1172 unsigned int geom[4];
1174 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1179 ecore_x_window_prop_card32_set(win,
1180 ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY,
1185 ecore_x_e_illume_clipboard_geometry_get(Ecore_X_Window win,
1186 int *x, int *y, int *w, int *h)
1189 unsigned int geom[4];
1191 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1193 ecore_x_window_prop_card32_get(win,
1194 ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY,
1196 if (ret != 4) return EINA_FALSE;
1198 if (x) *x = geom[0];
1199 if (y) *y = geom[1];
1200 if (w) *w = geom[2];
1201 if (h) *h = geom[3];
1207 ecore_x_e_illume_mode_set(Ecore_X_Window win,
1208 Ecore_X_Illume_Mode mode)
1210 Ecore_X_Atom atom = 0;
1212 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1214 atom = _ecore_xcb_e_illume_atom_get(mode);
1215 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_MODE, &atom, 1);
1218 EAPI Ecore_X_Illume_Mode
1219 ecore_x_e_illume_mode_get(Ecore_X_Window win)
1221 Ecore_X_Atom atom = 0;
1223 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1225 if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_ILLUME_MODE, &atom, 1))
1226 return ECORE_X_ILLUME_MODE_UNKNOWN;
1228 return _ecore_xcb_e_illume_mode_get(atom);
1232 ecore_x_e_illume_mode_send(Ecore_X_Window win,
1233 Ecore_X_Illume_Mode mode)
1235 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1237 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_MODE,
1238 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1239 _ecore_xcb_e_illume_atom_get(mode),
1244 ecore_x_e_illume_focus_back_send(Ecore_X_Window win)
1246 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1248 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_BACK,
1249 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1254 ecore_x_e_illume_focus_forward_send(Ecore_X_Window win)
1256 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1258 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_FORWARD,
1259 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1264 ecore_x_e_illume_focus_home_send(Ecore_X_Window win)
1266 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1268 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_HOME,
1269 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1274 ecore_x_e_illume_close_send(Ecore_X_Window win)
1276 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1278 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_CLOSE,
1279 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1284 ecore_x_e_illume_home_new_send(Ecore_X_Window win)
1286 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1288 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_NEW,
1289 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1294 ecore_x_e_illume_home_del_send(Ecore_X_Window win)
1296 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1298 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_DEL,
1299 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1304 ecore_x_e_illume_access_action_next_send(Ecore_X_Window win)
1306 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1308 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1309 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1311 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_NEXT,
1316 ecore_x_e_illume_access_action_prev_send(Ecore_X_Window win)
1318 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1320 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1321 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1323 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_PREV,
1328 ecore_x_e_illume_access_action_activate_send(Ecore_X_Window win)
1330 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1332 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1333 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1335 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_ACTIVATE,
1340 ecore_x_e_illume_access_action_over_send(Ecore_X_Window win)
1342 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1344 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1345 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1347 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_OVER,
1352 ecore_x_e_illume_access_action_read_send(Ecore_X_Window win)
1354 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1356 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1357 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1359 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ,
1364 ecore_x_e_illume_access_action_read_next_send(Ecore_X_Window win)
1366 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1368 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1369 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1371 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ_NEXT,
1376 ecore_x_e_illume_access_action_read_prev_send(Ecore_X_Window win)
1378 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1380 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1381 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1383 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ_PREV,
1388 ecore_x_e_illume_access_action_up_send(Ecore_X_Window win)
1390 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1392 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1393 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1395 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_UP,
1400 ecore_x_e_illume_access_action_down_send(Ecore_X_Window win)
1402 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1404 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
1405 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1407 ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_DOWN,
1412 ecore_x_e_illume_drag_set(Ecore_X_Window win,
1415 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1417 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG, &drag, 1);
1421 ecore_x_e_illume_drag_locked_set(Ecore_X_Window win,
1422 unsigned int is_locked)
1424 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1426 ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED,
1431 ecore_x_e_illume_drag_locked_get(Ecore_X_Window win)
1433 unsigned int val = 0;
1435 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1437 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED,
1441 return val ? EINA_TRUE : EINA_FALSE;
1445 ecore_x_e_illume_drag_get(Ecore_X_Window win)
1447 unsigned int val = 0;
1449 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1451 if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG, &val, 1))
1454 return val ? EINA_TRUE : EINA_FALSE;
1458 ecore_x_e_illume_drag_start_send(Ecore_X_Window win)
1460 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1461 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_START,
1462 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1467 ecore_x_e_illume_drag_end_send(Ecore_X_Window win)
1469 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1470 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_END,
1471 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1476 ecore_x_e_illume_zone_set(Ecore_X_Window win,
1477 Ecore_X_Window zone)
1479 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1481 ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE, &zone, 1);
1485 ecore_x_e_illume_zone_get(Ecore_X_Window win)
1487 Ecore_X_Window zone = 0;
1490 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1492 ret = ecore_x_window_prop_window_get(win, ECORE_X_ATOM_E_ILLUME_ZONE,
1494 if ((ret == 0) || (ret == -1))
1501 ecore_x_e_illume_zone_list_set(Ecore_X_Window win,
1502 Ecore_X_Window *zones,
1505 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1507 ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE_LIST,
1511 /* local functions */
1513 _ecore_xcb_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state)
1517 case ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF:
1518 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF;
1520 case ECORE_X_VIRTUAL_KEYBOARD_STATE_ON:
1521 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON;
1523 case ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA:
1524 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA;
1526 case ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC:
1527 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC;
1529 case ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN:
1530 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN;
1532 case ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER:
1533 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER;
1535 case ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX:
1536 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX;
1538 case ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL:
1539 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL;
1541 case ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD:
1542 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD;
1544 case ECORE_X_VIRTUAL_KEYBOARD_STATE_IP:
1545 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP;
1547 case ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST:
1548 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST;
1550 case ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE:
1551 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE;
1553 case ECORE_X_VIRTUAL_KEYBOARD_STATE_URL:
1554 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL;
1556 case ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD:
1557 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD;
1559 case ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME:
1560 return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME;
1568 static Ecore_X_Virtual_Keyboard_State
1569 _ecore_xcb_e_vkbd_state_get(Ecore_X_Atom atom)
1571 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON)
1572 return ECORE_X_VIRTUAL_KEYBOARD_STATE_ON;
1573 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF)
1574 return ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF;
1575 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA)
1576 return ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA;
1577 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC)
1578 return ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC;
1579 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN)
1580 return ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN;
1581 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER)
1582 return ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER;
1583 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX)
1584 return ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX;
1585 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL)
1586 return ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL;
1587 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD)
1588 return ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD;
1589 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP)
1590 return ECORE_X_VIRTUAL_KEYBOARD_STATE_IP;
1591 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST)
1592 return ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST;
1593 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE)
1594 return ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE;
1595 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL)
1596 return ECORE_X_VIRTUAL_KEYBOARD_STATE_URL;
1597 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD)
1598 return ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD;
1599 if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME)
1600 return ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME;
1602 return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
1606 _ecore_xcb_e_quickpanel_atom_get(Ecore_X_Illume_Quickpanel_State state)
1610 case ECORE_X_ILLUME_QUICKPANEL_STATE_ON:
1611 return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON;
1613 case ECORE_X_ILLUME_QUICKPANEL_STATE_OFF:
1614 return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF;
1622 static Ecore_X_Illume_Quickpanel_State
1623 _ecore_xcb_e_quickpanel_state_get(Ecore_X_Atom atom)
1625 if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON)
1626 return ECORE_X_ILLUME_QUICKPANEL_STATE_ON;
1627 if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF)
1628 return ECORE_X_ILLUME_QUICKPANEL_STATE_OFF;
1630 return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN;
1634 _ecore_xcb_e_illume_atom_get(Ecore_X_Illume_Mode mode)
1638 case ECORE_X_ILLUME_MODE_SINGLE:
1639 return ECORE_X_ATOM_E_ILLUME_MODE_SINGLE;
1641 case ECORE_X_ILLUME_MODE_DUAL_TOP:
1642 return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP;
1644 case ECORE_X_ILLUME_MODE_DUAL_LEFT:
1645 return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT;
1650 return ECORE_X_ILLUME_MODE_UNKNOWN;
1653 static Ecore_X_Illume_Mode
1654 _ecore_xcb_e_illume_mode_get(Ecore_X_Atom atom)
1656 if (atom == ECORE_X_ATOM_E_ILLUME_MODE_SINGLE)
1657 return ECORE_X_ILLUME_MODE_SINGLE;
1658 if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP)
1659 return ECORE_X_ILLUME_MODE_DUAL_TOP;
1660 if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT)
1661 return ECORE_X_ILLUME_MODE_DUAL_LEFT;
1663 return ECORE_X_ILLUME_MODE_UNKNOWN;
1667 _ecore_xcb_e_indicator_atom_get(Ecore_X_Illume_Indicator_State state)
1671 case ECORE_X_ILLUME_INDICATOR_STATE_ON:
1672 return ECORE_X_ATOM_E_ILLUME_INDICATOR_ON;
1674 case ECORE_X_ILLUME_INDICATOR_STATE_OFF:
1675 return ECORE_X_ATOM_E_ILLUME_INDICATOR_OFF;
1683 static Ecore_X_Illume_Indicator_State
1684 _ecore_xcb_e_indicator_state_get(Ecore_X_Atom atom)
1686 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_ON)
1687 return ECORE_X_ILLUME_INDICATOR_STATE_ON;
1688 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OFF)
1689 return ECORE_X_ILLUME_INDICATOR_STATE_OFF;
1691 return ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN;
1695 ecore_x_e_illume_indicator_state_set(Ecore_X_Window win,
1696 Ecore_X_Illume_Indicator_State state)
1698 Ecore_X_Atom atom = 0;
1700 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1702 atom = _ecore_xcb_e_indicator_atom_get(state);
1703 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
1707 EAPI Ecore_X_Illume_Indicator_State
1708 ecore_x_e_illume_indicator_state_get(Ecore_X_Window win)
1710 Ecore_X_Atom atom = 0;
1712 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1714 if (!ecore_x_window_prop_atom_get(win,
1715 ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
1717 return ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN;
1719 return _ecore_xcb_e_indicator_state_get(atom);
1723 ecore_x_e_illume_indicator_state_send(Ecore_X_Window win,
1724 Ecore_X_Illume_Indicator_State state)
1726 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1727 ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
1728 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1729 _ecore_xcb_e_indicator_atom_get(state),
1734 _ecore_x_e_indicator_opacity_atom_get(Ecore_X_Illume_Indicator_Opacity_Mode mode)
1738 case ECORE_X_ILLUME_INDICATOR_OPAQUE:
1739 return ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE;
1741 case ECORE_X_ILLUME_INDICATOR_TRANSLUCENT:
1742 return ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT;
1744 case ECORE_X_ILLUME_INDICATOR_TRANSPARENT:
1745 return ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT;
1753 static Ecore_X_Illume_Indicator_Opacity_Mode
1754 _ecore_x_e_indicator_opacity_get(Ecore_X_Atom atom)
1756 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE)
1757 return ECORE_X_ILLUME_INDICATOR_OPAQUE;
1759 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT)
1760 return ECORE_X_ILLUME_INDICATOR_TRANSLUCENT;
1762 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT)
1763 return ECORE_X_ILLUME_INDICATOR_TRANSPARENT;
1765 return ECORE_X_ILLUME_INDICATOR_OPACITY_UNKNOWN;
1769 ecore_x_e_illume_indicator_opacity_set(Ecore_X_Window win,
1770 Ecore_X_Illume_Indicator_Opacity_Mode mode)
1772 Ecore_X_Atom atom = 0;
1774 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1775 atom = _ecore_x_e_indicator_opacity_atom_get(mode);
1776 ecore_x_window_prop_atom_set(win,
1777 ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
1781 EAPI Ecore_X_Illume_Indicator_Opacity_Mode
1782 ecore_x_e_illume_indicator_opacity_get(Ecore_X_Window win)
1786 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1787 if (!ecore_x_window_prop_atom_get(win,
1788 ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
1790 return ECORE_X_ILLUME_INDICATOR_OPACITY_UNKNOWN;
1792 return _ecore_x_e_indicator_opacity_get(atom);
1796 ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window win,
1797 Ecore_X_Illume_Indicator_Opacity_Mode mode)
1799 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1800 ecore_x_client_message32_send(win,
1801 ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
1802 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1803 _ecore_x_e_indicator_opacity_atom_get(mode),
1808 _ecore_x_e_indicator_type_atom_get(Ecore_X_Illume_Indicator_Type_Mode mode)
1812 case ECORE_X_ILLUME_INDICATOR_TYPE_1:
1813 return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1;
1815 case ECORE_X_ILLUME_INDICATOR_TYPE_2:
1816 return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2;
1818 case ECORE_X_ILLUME_INDICATOR_TYPE_3:
1819 return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_3;
1827 static Ecore_X_Illume_Indicator_Type_Mode
1828 _ecore_x_e_indicator_type_get(Ecore_X_Atom atom)
1830 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1)
1831 return ECORE_X_ILLUME_INDICATOR_TYPE_1;
1833 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2)
1834 return ECORE_X_ILLUME_INDICATOR_TYPE_2;
1836 if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_3)
1837 return ECORE_X_ILLUME_INDICATOR_TYPE_3;
1839 return ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN;
1843 ecore_x_e_illume_indicator_type_set(Ecore_X_Window win,
1844 Ecore_X_Illume_Indicator_Type_Mode mode)
1846 Ecore_X_Atom atom = 0;
1848 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1849 atom = _ecore_x_e_indicator_type_atom_get(mode);
1850 ecore_x_window_prop_atom_set(win,
1851 ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
1855 EAPI Ecore_X_Illume_Indicator_Type_Mode
1856 ecore_x_e_illume_indicator_type_get(Ecore_X_Window win)
1860 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1861 if (!ecore_x_window_prop_atom_get(win,
1862 ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
1864 return ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN;
1866 return _ecore_x_e_indicator_type_get(atom);
1870 ecore_x_e_illume_indicator_type_send(Ecore_X_Window win,
1871 Ecore_X_Illume_Indicator_Type_Mode mode)
1873 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1874 ecore_x_client_message32_send(win,
1875 ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
1876 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1877 _ecore_x_e_indicator_type_atom_get(mode),
1882 _ecore_x_e_illume_window_state_atom_get(Ecore_X_Illume_Window_State state)
1886 case ECORE_X_ILLUME_WINDOW_STATE_NORMAL:
1887 return ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL;
1889 case ECORE_X_ILLUME_WINDOW_STATE_FLOATING:
1890 return ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING;
1898 static Ecore_X_Illume_Window_State
1899 _ecore_x_e_illume_window_state_get(Ecore_X_Atom atom)
1901 if (atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL)
1902 return ECORE_X_ILLUME_WINDOW_STATE_NORMAL;
1904 if (atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING)
1905 return ECORE_X_ILLUME_WINDOW_STATE_FLOATING;
1907 return ECORE_X_ILLUME_WINDOW_STATE_NORMAL;
1911 ecore_x_e_illume_window_state_set(Ecore_X_Window win,
1912 Ecore_X_Illume_Window_State state)
1914 Ecore_X_Atom atom = 0;
1916 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1917 atom = _ecore_x_e_illume_window_state_atom_get(state);
1918 ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_WINDOW_STATE,
1922 EAPI Ecore_X_Illume_Window_State
1923 ecore_x_e_illume_window_state_get(Ecore_X_Window win)
1927 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1928 if (!ecore_x_window_prop_atom_get(win,
1929 ECORE_X_ATOM_E_ILLUME_WINDOW_STATE,
1931 return ECORE_X_ILLUME_WINDOW_STATE_NORMAL;
1933 return _ecore_x_e_illume_window_state_get(atom);
1937 ecore_x_e_illume_window_state_send(Ecore_X_Window win,
1938 Ecore_X_Illume_Window_State state)
1940 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1941 ecore_x_client_message32_send(win,
1942 ECORE_X_ATOM_E_ILLUME_WINDOW_STATE,
1943 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1944 _ecore_x_e_illume_window_state_atom_get(state),
1949 ecore_x_e_window_rotation_supported_set(Ecore_X_Window root,
1954 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1957 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
1961 win = ecore_x_window_new(root, 1, 2, 3, 4);
1962 ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
1963 ECORE_X_ATOM_WINDOW, &win, 1);
1964 ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
1965 ECORE_X_ATOM_WINDOW, &win, 1);
1972 ecore_x_window_prop_xid_get(root,
1973 ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
1974 ECORE_X_ATOM_WINDOW,
1976 if ((ret == 1) && (win))
1978 ecore_x_window_prop_property_del(
1980 ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED);
1981 ecore_x_window_free(win);
1987 ecore_x_e_window_rotation_supported_get(Ecore_X_Window root)
1989 Ecore_X_Window win, win2;
1992 LOGFN(__FILE__, __LINE__, __FUNCTION__);
1995 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
1998 ecore_x_window_prop_xid_get(root,
1999 ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
2000 ECORE_X_ATOM_WINDOW,
2002 if ((ret == 1) && (win))
2005 ecore_x_window_prop_xid_get(win,
2006 ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
2007 ECORE_X_ATOM_WINDOW,
2009 if ((ret == 1) && (win2 == win))
2017 ecore_x_e_window_rotation_app_set(Ecore_X_Window win,
2020 unsigned int val = 0;
2022 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2026 ecore_x_window_prop_card32_set(win,
2027 ECORE_X_ATOM_E_WINDOW_ROTATION_APP_SUPPORTED,
2032 ecore_x_e_window_rotation_app_get(Ecore_X_Window win)
2034 unsigned int val = 0;
2036 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2038 if (!ecore_x_window_prop_card32_get(win,
2039 ECORE_X_ATOM_E_WINDOW_ROTATION_APP_SUPPORTED,
2043 return val ? EINA_TRUE : EINA_FALSE;
2047 ecore_x_e_window_rotation_preferred_rotation_set(Ecore_X_Window win,
2050 unsigned int val = 0;
2052 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2056 val = (unsigned int)rot;
2057 ecore_x_window_prop_card32_set(win,
2058 ECORE_X_ATOM_E_WINDOW_ROTATION_PREFERRED_ROTATION,
2063 ecore_x_window_prop_property_del(win,
2064 ECORE_X_ATOM_E_WINDOW_ROTATION_PREFERRED_ROTATION);
2069 ecore_x_e_window_rotation_preferred_rotation_get(Ecore_X_Window win,
2072 unsigned int val = 0;
2075 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2077 ret = ecore_x_window_prop_card32_get(win,
2078 ECORE_X_ATOM_E_WINDOW_ROTATION_PREFERRED_ROTATION,
2082 if (rot) *rot = (int)val;
2089 ecore_x_e_window_rotation_available_rotations_set(Ecore_X_Window win,
2093 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2097 if ((rots) && (count > 0))
2098 ecore_x_window_prop_card32_set(win,
2099 ECORE_X_ATOM_E_WINDOW_ROTATION_AVAILABLE_LIST,
2100 (unsigned int *)rots, count);
2102 ecore_x_window_prop_property_del(win,
2103 ECORE_X_ATOM_E_WINDOW_ROTATION_AVAILABLE_LIST);
2107 ecore_x_e_window_rotation_available_rotations_get(Ecore_X_Window win,
2109 unsigned int *count)
2111 unsigned char *data = NULL;
2115 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2118 if ((!win) || (!rots) || (!count))
2124 if (!ecore_x_window_prop_property_get(win,
2125 ECORE_X_ATOM_E_WINDOW_ROTATION_AVAILABLE_LIST,
2126 XCB_ATOM_CARDINAL, 32, &data, &num))
2131 if ((num >= 1) && (data))
2133 val = calloc(num, sizeof(int));
2137 if (data) free(data);
2140 for (i = 0; i < num; i++)
2141 val[i] = ((int *)data)[i];
2142 if (data) free(data);
2146 if (data) free(data);
2151 ecore_x_e_window_rotation_change_prepare_send(Ecore_X_Window win,
2157 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2159 ecore_x_client_message32_send(win,
2160 ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_PREPARE,
2161 ECORE_X_EVENT_MASK_NONE,
2162 win, rot, resize, w, h);
2166 ecore_x_e_window_rotation_change_prepare_done_send(Ecore_X_Window root,
2170 xcb_client_message_event_t ev;
2172 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2175 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
2177 memset(&ev, 0, sizeof(xcb_client_message_event_t));
2179 ev.response_type = XCB_CLIENT_MESSAGE;
2182 ev.type = ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_PREPARE_DONE;
2183 ev.data.data32[0] = win;
2184 ev.data.data32[1] = rot;
2185 ev.data.data32[2] = 0;
2186 ev.data.data32[3] = 0;
2187 ev.data.data32[4] = 0;
2189 xcb_send_event(_ecore_xcb_conn, 0, root,
2190 (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
2191 XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
2195 ecore_x_e_window_rotation_change_request_send(Ecore_X_Window win,
2198 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2200 ecore_x_client_message32_send(win,
2201 ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_REQUEST,
2202 ECORE_X_EVENT_MASK_NONE,
2207 ecore_x_e_window_rotation_change_done_send(Ecore_X_Window root,
2213 xcb_client_message_event_t ev;
2215 LOGFN(__FILE__, __LINE__, __FUNCTION__);
2218 if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
2220 memset(&ev, 0, sizeof(xcb_client_message_event_t));
2222 ev.response_type = XCB_CLIENT_MESSAGE;
2225 ev.type = ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_DONE;
2226 ev.data.data32[0] = win;
2227 ev.data.data32[1] = rot;
2228 ev.data.data32[2] = w;
2229 ev.data.data32[3] = h;
2230 ev.data.data32[4] = 0;
2232 xcb_send_event(_ecore_xcb_conn, 0, root,
2233 (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
2234 XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
2238 ecore_x_e_keyrouter_set(Ecore_X_Window win EINA_UNUSED, Eina_Bool on)
2240 Ecore_X_Window root;
2245 root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
2247 ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_E_KEYROUTER_SUPPORTED,
2252 ecore_x_e_keyrouter_get(Ecore_X_Window win EINA_UNUSED)
2254 Ecore_X_Window root;
2260 root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
2262 ecore_x_window_prop_card32_get(root, ECORE_X_ATOM_E_KEYROUTER_SUPPORTED,
2264 if (ret != 1) return EINA_FALSE;
2265 return (val == 1) ? EINA_TRUE : EINA_FALSE;