1 #include "e_illume_private.h"
2 #include "e_mod_config.h"
5 * @defgroup E_Illume_Main_Group Illume API Information
7 * The following group defines variables, structures, and functions available
12 * Returns the @ref E_Illume_Config_Zone structure for a specific zone.
14 * @param id The id of the E_Zone.
15 * @return The @ref E_Illume_Config_Zone structure for this zone.
17 * @note This function will return a new @ref E_Illume_Config_Zone structure
18 * if none exists. This new @ref E_Illume_Config_Zone will be added to the
19 * existing list of @ref E_Illume_Config_Zone structures automatically.
21 * @ingroup E_Illume_Config_Group
23 EAPI E_Illume_Config_Zone *
24 e_illume_zone_config_get(int id)
27 E_Illume_Config_Zone *cz = NULL;
29 /* loop existing zone configs and look for this id */
30 EINA_LIST_FOREACH(_e_illume_cfg->policy.zones, l, cz)
32 if (cz->id != id) continue;
36 /* we did not find an existing one for this zone, so create a new one */
37 cz = E_NEW(E_Illume_Config_Zone, 1);
42 /* add it to the list */
43 _e_illume_cfg->policy.zones =
44 eina_list_append(_e_illume_cfg->policy.zones, cz);
46 /* save it in config */
47 e_mod_illume_config_save();
49 /* return a fallback */
54 * Determine if a given border is an Indicator window.
56 * @param bd The border to test.
57 * @return EINA_TRUE if it is an Indicator window, EINA_FALSE otherwise.
59 * @note If @p bd is NULL then this function will return EINA_FALSE.
61 * @note It is assumed that Indicator windows are of type
62 * ECORE_X_WINDOW_TYPE_DOCK.
64 * @ingroup E_Illume_Main_Group
67 e_illume_border_is_indicator(E_Border *bd)
69 /* make sure we have a border */
70 if (!bd) return EINA_FALSE;
72 /* indicator windows should be set to dock type, so check for that */
73 if (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DOCK) return EINA_FALSE;
75 /* we have a dock window, check against any matches in config */
77 /* check if we are matching on name */
78 if (_e_illume_cfg->policy.indicator.match.name)
80 if ((bd->client.icccm.name) &&
81 (!strcmp(bd->client.icccm.name,
82 _e_illume_cfg->policy.indicator.name)))
86 /* check if we are matching on class */
87 if (_e_illume_cfg->policy.indicator.match.class)
89 if ((bd->client.icccm.class) &&
90 (!strcmp(bd->client.icccm.class,
91 _e_illume_cfg->policy.indicator.class)))
95 /* check if we are matching on title */
96 if (_e_illume_cfg->policy.indicator.match.title)
100 if ((title = e_border_name_get(bd)))
101 if (!strcmp(title, _e_illume_cfg->policy.indicator.title))
105 /* return a fallback */
110 * Determine if a given border is a Softkey window.
112 * @param bd The border to test.
113 * @return EINA_TRUE if it is a Softkey window, EINA_FALSE otherwise.
115 * @note If @p bd is NULL then this function will return EINA_FALSE.
117 * @note It is assumed that Softkey windows are of type
118 * ECORE_X_WINDOW_TYPE_DOCK.
120 * @ingroup E_Illume_Main_Group
123 e_illume_border_is_softkey(E_Border *bd)
125 /* make sure we have a border */
126 if (!bd) return EINA_FALSE;
128 /* legacy code from illume 1 */
129 if (bd->client.qtopia.soft_menu) return EINA_TRUE;
131 /* softkey windows should be set to dock type, so check for that */
132 if (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DOCK) return EINA_FALSE;
134 /* we have a softkey window, check against any matches in config */
136 /* check if we are matching on name */
137 if (_e_illume_cfg->policy.softkey.match.name)
139 if ((bd->client.icccm.name) &&
140 (!strcmp(bd->client.icccm.name,
141 _e_illume_cfg->policy.softkey.name)))
145 /* check if we are matching on class */
146 if (_e_illume_cfg->policy.softkey.match.class)
148 if ((bd->client.icccm.class) &&
149 (!strcmp(bd->client.icccm.class,
150 _e_illume_cfg->policy.softkey.class)))
154 /* check if we are matching on title */
155 if (_e_illume_cfg->policy.softkey.match.title)
159 if ((title = e_border_name_get(bd)))
160 if (!strcmp(title, _e_illume_cfg->policy.softkey.title))
164 /* return a fallback */
169 * Determine if a given border is a Keyboard window.
171 * @param bd The border to test.
172 * @return EINA_TRUE if it is a Keyboard window, EINA_FALSE otherwise.
174 * @note If @p bd is NULL then this function will return EINA_FALSE.
176 * @ingroup E_Illume_Main_Group
179 e_illume_border_is_keyboard(E_Border *bd)
181 /* make sure we have a border */
182 if (!bd) return EINA_FALSE;
184 /* check for specific flag first */
185 if (bd->client.vkbd.vkbd) return EINA_TRUE;
187 /* legacy code from illume 1 */
188 if ((bd->client.icccm.name) &&
189 ((!strcmp(bd->client.icccm.name, "multitap-pad"))) &&
190 (bd->client.netwm.state.skip_taskbar) &&
191 (bd->client.netwm.state.skip_pager))
194 /* check if we are matching on name */
195 if (_e_illume_cfg->policy.vkbd.match.name)
197 if ((bd->client.icccm.name) &&
198 (!strcmp(bd->client.icccm.name,
199 _e_illume_cfg->policy.vkbd.name)))
203 /* check if we are matching on class */
204 if (_e_illume_cfg->policy.vkbd.match.class)
206 if ((bd->client.icccm.class) &&
207 (!strcmp(bd->client.icccm.class,
208 _e_illume_cfg->policy.vkbd.class)))
212 /* check if we are matching on title */
213 if (_e_illume_cfg->policy.vkbd.match.title)
217 if ((title = e_border_name_get(bd)))
218 if (!strcmp(title, _e_illume_cfg->policy.vkbd.title))
222 /* return a fallback */
227 * Determine if a given border is a Home window.
229 * @param bd The border to test.
230 * @return EINA_TRUE if it is a Home window, EINA_FALSE otherwise.
232 * @note If @p bd is NULL then this function will return EINA_FALSE.
234 * @ingroup E_Illume_Main_Group
237 e_illume_border_is_home(E_Border *bd)
239 /* make sure we have a border */
240 if (!bd) return EINA_FALSE;
242 /* skip windows which are not either 'normal' windows, or 'unknown' windows
243 * NB: Let 'unknown' windows pass through as a safety */
244 if ((bd->client.netwm.type != ECORE_X_WINDOW_TYPE_NORMAL) &&
245 (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_UNKNOWN))
248 /* check if we are matching on name */
249 if (_e_illume_cfg->policy.home.match.name)
251 if ((bd->client.icccm.name) &&
252 (!strcmp(bd->client.icccm.name,
253 _e_illume_cfg->policy.home.name)))
257 /* check if we are matching on class */
258 if (_e_illume_cfg->policy.home.match.class)
260 if ((bd->client.icccm.class) &&
261 (!strcmp(bd->client.icccm.class,
262 _e_illume_cfg->policy.home.class)))
266 /* check if we are matching on title */
267 if (_e_illume_cfg->policy.home.match.title)
271 if ((title = e_border_name_get(bd)))
272 if (!strcmp(title, _e_illume_cfg->policy.home.title))
276 /* return a fallback */
281 * Determine if a given border is a splash screen.
283 * @param bd The border to test.
284 * @return EINA_TRUE if it is a splash screen, EINA_FALSE otherwise.
286 * @note If @p bd is NULL then this function will return EINA_FALSE.
288 * @ingroup E_Illume_Main_Group
291 e_illume_border_is_splash(E_Border *bd)
293 /* make sure we have a border */
294 if (!bd) return EINA_FALSE;
296 /* check actual type */
297 if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_SPLASH) return EINA_TRUE;
299 /* check for transient flag */
300 // if (bd->client.icccm.transient_for != 0) return EINA_TRUE;
302 /* NB: may or may not need to handle these. Needs Testing
303 if (bd->client.netwm.extra_types)
304 printf("\t\tBorder has extra types: %s\n", bd->client.icccm.class);
307 /* return a fallback */
312 * Determine if a given border is a dialog.
314 * @param bd The border to test.
315 * @return EINA_TRUE if it is a dialog, EINA_FALSE otherwise.
317 * @note If @p bd is NULL then this function will return EINA_FALSE.
319 * @ingroup E_Illume_Main_Group
322 e_illume_border_is_dialog(E_Border *bd)
324 /* make sure we have a border */
325 if (!bd) return EINA_FALSE;
327 /* check actual type */
328 if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG) return EINA_TRUE;
330 /* check for transient flag */
331 if (bd->client.icccm.transient_for != 0) return EINA_TRUE;
333 /* check for client leader */
334 /* NB: disabled currently as some GTK windows set this even tho they are
336 // if (bd->client.icccm.client_leader) return EINA_TRUE;
338 /* NB: may or may not need to handle these. Needs Testing
339 if (bd->client.netwm.extra_types)
340 printf("\t\tBorder has extra types: %s\n", bd->client.icccm.class);
343 /* return a fallback */
348 * Determine if a given border is a QT VCLSalFrame.
350 * @param bd The border to test.
351 * @return EINA_TRUE if it is a VCLSalFrame, EINA_FALSE otherwise.
353 * @note If @p bd is NULL then this function will return EINA_FALSE.
355 * @ingroup E_Illume_Main_Group
358 e_illume_border_is_qt_frame(E_Border *bd)
360 /* make sure we have a border */
361 if (!bd) return EINA_FALSE;
363 /* make sure we have the icccm name and compare it */
364 if ((bd->client.icccm.name) &&
365 (!strncmp(bd->client.icccm.name, "VCLSalFrame", 11)))
368 /* return a fallback */
373 * Determine if a given border is a fullscreen window.
375 * @param bd The border to test.
376 * @return EINA_TRUE if it is fullscreen, EINA_FALSE otherwise.
378 * @note If @p bd is NULL then this function will return EINA_FALSE.
380 * @ingroup E_Illume_Main_Group
383 e_illume_border_is_fullscreen(E_Border *bd)
385 /* make sure we have a border */
386 if (!bd) return EINA_FALSE;
388 /* check for fullscreen */
389 if ((bd->fullscreen) || (bd->need_fullscreen)) return EINA_TRUE;
391 /* return a fallback */
396 * Determine if a given border is an illume conformant window.
398 * @param bd The border to test.
399 * @return EINA_TRUE if it is conformant, EINA_FALSE otherwise.
401 * @note If @p bd is NULL then this function will return EINA_FALSE.
403 * @ingroup E_Illume_Main_Group
406 e_illume_border_is_conformant(E_Border *bd)
408 /* make sure we have a border */
409 if (!bd) return EINA_FALSE;
411 /* return if it is conformant or not */
412 return bd->client.illume.conformant.conformant;
416 * Determine if a given border is a quickpanel window.
418 * @param bd The border to test.
419 * @return EINA_TRUE if it is a quickpanel, EINA_FALSE otherwise.
421 * @note If @p bd is NULL then this function will return EINA_FALSE.
423 * @ingroup E_Illume_Main_Group
426 e_illume_border_is_quickpanel(E_Border *bd)
428 /* make sure we have a border */
429 if (!bd) return EINA_FALSE;
431 /* return if it is a quickpanel or not */
432 return bd->client.illume.quickpanel.quickpanel;
436 * Determine if the border request a fixed size.
438 * @param bd The border to get the minium space for.
439 * @return EINA_TRUE if border requested fixed size, EINA_FALSE otherwise.
441 * @note If @p bd is NULL then this function will return EINA_FALSE.
443 * @ingroup E_Illume_Main_Group
446 e_illume_border_is_fixed_size(E_Border *bd)
448 /* make sure we have a border */
449 if (!bd) return EINA_FALSE;
451 if ((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
452 (bd->client.icccm.min_h == bd->client.icccm.max_h))
455 if ((bd->client.mwm.exists) &&
456 !((bd->client.mwm.func & ECORE_X_MWM_HINT_FUNC_ALL) ||
457 (bd->client.mwm.func & ECORE_X_MWM_HINT_FUNC_MAXIMIZE) ||
458 (bd->client.mwm.func & ECORE_X_MWM_HINT_FUNC_RESIZE)))
465 * Retrieves the minimum space required to display this border.
467 * @param bd The border to get the minium space for.
468 * @param w Pointer to an integer into which the width is to be stored.
469 * @param h Pointer to an integer into which the height is to be stored.
471 * @note if @p bd is NULL then @p w and @p h will return @c 0.
473 * @ingroup E_Illume_Main_Group
476 e_illume_border_min_get(E_Border *bd, int *w, int *h)
484 if (bd->client.icccm.base_w > bd->client.icccm.min_w)
485 *w = bd->client.icccm.base_w;
487 *w = bd->client.icccm.min_w;
491 if (bd->client.icccm.base_h > bd->client.icccm.min_h)
492 *h = bd->client.icccm.base_h;
494 *h = bd->client.icccm.min_h;
499 * Retrieves a border, given an x and y coordinate, from a zone.
501 * @param zone The zone.
502 * @param x The X coordinate to check for border at.
503 * @param y The Y coordinate to check for border at.
505 * @note if @p zone is NULL then this function will return NULL.
507 * @warning Both X and Y coordinates are required to reliably detect a border.
509 * @ingroup E_Illume_Main_Group
512 e_illume_border_at_xy_get(E_Zone *zone, int x, int y)
517 /* make sure we have a zone */
518 if (!zone) return NULL;
520 /* loop the border client list */
521 /* NB: We use e_border_client_list here, rather than
522 * e_container_border_list, because e_border_client_list is faster.
523 * This is done in reverse order so we get the most recent border first */
524 EINA_LIST_REVERSE_FOREACH(e_border_client_list(), l, bd)
526 /* check zone and skip borders not on this zone */
527 if (bd->zone != zone) continue;
529 /* skip invisibles */
530 if (!bd->visible) continue;
532 /* check position against given coordinates */
533 if ((bd->x != x) || (bd->y != y)) continue;
535 /* filter out borders we don't want */
536 if (e_illume_border_is_indicator(bd)) continue;
537 if (e_illume_border_is_softkey(bd)) continue;
538 if (e_illume_border_is_keyboard(bd)) continue;
539 if (e_illume_border_is_quickpanel(bd)) continue;
540 if (e_illume_border_is_home(bd)) continue;
542 /* found one, return it */
546 /* return a fallback */
551 * Retrieve the parent of a given dialog.
553 * @param bd The border to get the parent of.
554 * @return The border's parent, or NULL if no parent exists.
556 * @note If @p bd is NULL then this function will return NULL.
558 * @ingroup E_Illume_Main_Group
561 e_illume_border_parent_get(E_Border *bd)
563 /* make sure we have a border */
564 if (!bd) return NULL;
566 /* check for border's parent */
567 if (bd->parent) return bd->parent;
569 /* NB: TEST CODE - may need to check bd->leader here */
571 printf("\tDialog Has Leader: %s\n", bd->client.icccm.name);
573 /* check for transient */
574 if (bd->client.icccm.transient_for)
576 /* try to find this borders parent */
577 return e_border_find_by_client_window(bd->client.icccm.transient_for);
579 else if (bd->client.icccm.client_leader)
581 /* NB: using client_leader as parent. THIS NEEDS THOROUGH TESTING !! */
582 return e_border_find_by_client_window(bd->client.icccm.client_leader);
585 /* return a fallback */
590 * Show a given border.
592 * @param bd The border to show.
594 * @note If @p bd is NULL then this function will return.
596 * @ingroup E_Illume_Main_Group
599 e_illume_border_show(E_Border *bd)
601 /* make sure we have a border */
604 e_border_uniconify(bd);
610 unsigned int visible = 1;
612 /* NB: We handle shows this way so we don't get extra layout events from
613 * the e_border calls */
614 e_container_border_lower(bd);
615 e_container_shape_show(bd->shape);
616 if (!bd->need_reparent) ecore_x_window_show(bd->client.win);
617 e_hints_window_visible_set(bd);
619 bd->changes.visible = 1;
620 ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_MAPPED, &visible, 1);
621 ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_MANAGED, &visible, 1);
626 * Hide a given border.
628 * @param bd The border to hide.
630 * @note If @p bd is NULL then this function will return.
632 * @ingroup E_Illume_Main_Group
635 e_illume_border_hide(E_Border *bd)
637 /* make sure we have a border */
640 e_border_iconify(bd);
644 unsigned int visible = 0;
646 /* NB: We handle hides this way so we don't get extra layout events from
647 * the e_border calls */
648 e_container_shape_hide(bd->shape);
649 if (!bd->iconic) e_hints_window_hidden_set(bd);
651 bd->changes.visible = 1;
652 ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_MAPPED, &visible, 1);
657 * Retrieve the Indicator window on a given zone.
659 * @param zone The zone.
660 * @return The Indicator border, or NULL if no Indicator exists.
662 * @note If @p zone is NULL then this function will return NULL.
664 * @ingroup E_Illume_Main_Group
667 e_illume_border_indicator_get(E_Zone *zone)
672 /* make sure we have a zone */
673 if (!zone) return NULL;
675 /* loop the border client list */
676 /* NB: We use e_border_client_list here, rather than
677 * e_container_border_list, because e_border_client_list is faster */
678 EINA_LIST_FOREACH(e_border_client_list(), l, bd)
680 /* check zone and skip borders not on this zone */
681 if (bd->zone != zone) continue;
683 /* skip borders that are not indicators */
684 if (!e_illume_border_is_indicator(bd)) continue;
686 /* found one, return it */
690 /* return a fallback */
695 * Retrieves the current position of the Indicator window.
697 * @param zone The zone on which to retrieve the Indicator position.
698 * @param x Pointer to an integer into which the left is to be stored.
699 * @param y Pointer to an integer into which the top is to be stored.
701 * @note if @p zone is NULL then @p x, @p y, @p w, and @p h will return @c 0.
703 * @ingroup E_Illume_Main_Group
706 e_illume_border_indicator_pos_get(E_Zone *zone, int *x, int *y)
713 /* make sure we have a zone */
716 /* set default values */
720 /* try and get the Indicator on this zone */
721 if (!(ind = e_illume_border_indicator_get(zone))) return;
723 /* return Indicator position(s) */
729 * Retrieve the Softkey window on a given zone.
731 * @param zone The zone.
732 * @return The Softkey border, or NULL if no Softkey exists.
734 * @note If @p zone is NULL then this function will return NULL.
736 * @ingroup E_Illume_Main_Group
739 e_illume_border_softkey_get(E_Zone *zone)
744 /* make sure we have a zone */
745 if (!zone) return NULL;
747 /* loop the border client list */
748 /* NB: We use e_border_client_list here, rather than
749 * e_container_border_list, because e_border_client_list is faster */
750 EINA_LIST_FOREACH(e_border_client_list(), l, bd)
752 /* check zone and skip borders not on this zone */
753 if (bd->zone != zone) continue;
755 /* skip borders that are not indicators */
756 if (!e_illume_border_is_softkey(bd)) continue;
758 /* found one, return it */
762 /* return a fallback */
767 * Retrieves the current position of the Softkey window.
769 * @param zone The zone on which to retrieve the Softkey position.
770 * @param x Pointer to an integer into which the left is to be stored.
771 * @param y Pointer to an integer into which the top is to be stored.
773 * @note if @p zone is NULL then @p x, @p y, @p w, and @p h will return @c 0.
775 * @ingroup E_Illume_Main_Group
778 e_illume_border_softkey_pos_get(E_Zone *zone, int *x, int *y)
785 /* make sure we have a zone */
788 /* set default values */
792 /* try and get the Softkey on this zone */
793 if (!(sft = e_illume_border_softkey_get(zone))) return;
795 /* return Indicator position(s) */
801 * Retrieve the Keyboard.
803 * @return The @ref E_Illume_Keyboard, or NULL if no keyboard exists.
805 * @ingroup E_Illume_Keyboard_Group
807 EAPI E_Illume_Keyboard *
808 e_illume_keyboard_get(void)
810 /* make sure we have a keyboard */
811 if (!_e_illume_kbd) return NULL;
813 /* return the keyboard */
814 return _e_illume_kbd;
818 * Retrieves the available screen space not occupied by the virtual keyboard.
820 * @param zone The zone on which to retrieve the available space.
821 * @param x Pointer to an integer into which the left is to be stored.
822 * @param y Pointer to an integer into which the top is to be stored.
823 * @param w Pointer to an integer into which the width is to be stored.
824 * @param h Pointer to an integer into which the height is to be stored.
826 * @note if @p zone is NULL then @p x, @p y, @p w, and @p h will return @c 0.
828 * @warning This function does not account for space or position of Indicator
829 * or Softkey windows.
831 * @ingroup E_Illume_Keyboard_Group
834 e_illume_keyboard_safe_app_region_get(E_Zone *zone, int *x, int *y, int *w, int *h)
841 /* make sure we have a zone */
844 /* set default values */
850 /* if the keyboard is disabled, get out */
851 if ((!_e_illume_kbd->visible) || (_e_illume_kbd->disabled)) return;
853 /* if we don't have a border, get out */
854 /* NB: This basically means that we have the vkbd structure, but no
855 * app or module present to act as the vkbd */
856 if (!_e_illume_kbd->border) return;
858 /* if the keyboard border is not on this zone, get out */
859 if (_e_illume_kbd->border->zone != zone) return;
861 if (!_e_illume_kbd->animator)
865 *h -= _e_illume_kbd->border->h;
872 * Retrieve the Home window on a given zone.
874 * @param zone The zone.
875 * @return The Home window, or NULL if no Home window exists.
877 * @note If @p zone is NULL then this function will return NULL.
879 * @ingroup E_Illume_Main_Group
882 e_illume_border_home_get(E_Zone *zone)
887 /* make sure we have a zone */
888 if (!zone) return NULL;
890 /* loop the border client list */
891 /* NB: We use e_border_client_list here, rather than
892 * e_container_border_list, because e_border_client_list is faster */
893 EINA_LIST_FOREACH(e_border_client_list(), l, bd)
895 /* check zone and skip borders not on this zone */
896 if (bd->zone != zone) continue;
898 /* skip borders that are not home windows */
899 if (!e_illume_border_is_home(bd)) continue;
901 /* found one, return it */
905 /* return a fallback */
910 * Retrieve the list of Home windows on a given zone.
912 * @param zone The zone.
913 * @return A list of existing Home windows, or NULL if none exist.
915 * @note If @p zone is NULL then this function will return NULL.
917 * @ingroup E_Illume_Main_Group
920 e_illume_border_home_borders_get(E_Zone *zone)
922 Eina_List *ret = NULL, *l;
925 /* make sure we have a zone */
926 if (!zone) return NULL;
928 /* loop the border client list */
929 /* NB: We use e_border_client_list here, rather than
930 * e_container_border_list, because e_border_client_list is faster */
931 EINA_LIST_FOREACH(e_border_client_list(), l, bd)
933 /* check zone and skip borders not on this zone */
934 if (bd->zone != zone) continue;
936 /* skip borders that are not home windows */
937 if (!e_illume_border_is_home(bd)) continue;
939 /* found one, append it to the list */
940 ret = eina_list_append(ret, bd);
943 /* return the list */
948 * Retrieve the Illume Quickpanel on a given zone.
950 * @param zone The zone on which to retrieve the Quickpanel.
951 * @return The @ref E_Illume_Quickpanel on this zone, or NULL if none exists.
953 * @note If @p zone is NULL then this function will return NULL.
955 * @ingroup E_Illume_Quickpanel_Group
957 EAPI E_Illume_Quickpanel *
958 e_illume_quickpanel_by_zone_get(E_Zone *zone)
960 E_Illume_Quickpanel *qp;
963 /* make sure we have a zone */
964 if (!zone) return NULL;
966 /* loop the list of quickpanels, looking for one on this zone */
967 EINA_LIST_FOREACH(_e_illume_qps, l, qp)
968 if (qp->zone == zone) return qp;
970 /* return a fallback */
975 * Show the Illume Quickpanel on a given zone.
977 * @param zone The zone on which to show the Quickpanel.
979 * @note If @p zone is NULL then this function will return.
981 * @ingroup E_Illume_Quickpanel_Group
984 e_illume_quickpanel_show(E_Zone *zone)
987 ecore_x_e_illume_quickpanel_state_send(zone->black_win,
988 ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
992 * Hide the Illume Quickpanel on a given zone.
994 * @param zone The zone on which to hide the Quickpanel.
996 * @note If @p zone is NULL then this function will return.
998 * @ingroup E_Illume_Quickpanel_Group
1001 e_illume_quickpanel_hide(E_Zone *zone)
1004 ecore_x_e_illume_quickpanel_state_send(zone->black_win,
1005 ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);