1 #include "e_mod_comp_shared_types.h"
2 #include "e_mod_comp.h"
3 #include "e_mod_comp_debug.h"
4 #include "e_mod_comp_policy.h"
6 /* local subsystem functions */
8 /* local subsystem globals */
9 static Eina_Hash *shadow_hash = NULL;
11 /* externally accessible functions */
13 e_mod_comp_policy_init(void)
15 if (!shadow_hash) shadow_hash = eina_hash_string_superfast_new(NULL);
17 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UNKNOWN), _comp_mod->conf->effect_policy_unknown);
18 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DESKTOP), _comp_mod->conf->effect_policy_desktop);
19 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DOCK), _comp_mod->conf->effect_policy_dock);
20 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLBAR), _comp_mod->conf->effect_policy_toolbar);
21 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENU), _comp_mod->conf->effect_policy_menu);
22 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UTILITY), _comp_mod->conf->effect_policy_utility);
23 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SPLASH), _comp_mod->conf->effect_policy_splash);
24 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DIALOG), _comp_mod->conf->effect_policy_dialog);
25 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NORMAL), _comp_mod->conf->effect_policy_normal);
26 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_VIDEOCALL), _comp_mod->conf->effect_policy_videocall);
27 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DROPDOWN_MENU), _comp_mod->conf->effect_policy_dropdown_menu);
28 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_POPUP_MENU), _comp_mod->conf->effect_policy_popup_menu);
29 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLTIP), _comp_mod->conf->effect_policy_tooltip);
30 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NOTIFICATION), _comp_mod->conf->effect_policy_notification);
31 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_COMBO), _comp_mod->conf->effect_policy_combo);
32 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DND), _comp_mod->conf->effect_policy_dnd);
33 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENUSCREEN), _comp_mod->conf->effect_policy_menuscreen);
34 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL_BASE), _comp_mod->conf->effect_policy_quickpanel_base);
35 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL), _comp_mod->conf->effect_policy_quickpanel);
36 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TASKMANAGER), _comp_mod->conf->effect_policy_taskmanager);
37 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LIVEMAGAZINE), _comp_mod->conf->effect_policy_livemagazine);
38 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LOCKSCREEN), _comp_mod->conf->effect_policy_lockscreen);
39 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_INDICATOR), _comp_mod->conf->effect_policy_indicator);
40 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TICKERNOTI), _comp_mod->conf->effect_policy_tickernoti);
41 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DEBUGGING_INFO), _comp_mod->conf->effect_policy_debugging_info);
42 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_APPTRAY), _comp_mod->conf->effect_policy_apptray);
43 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MINI_APPTRAY), _comp_mod->conf->effect_policy_mini_apptray);
44 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_VOLUME), _comp_mod->conf->effect_policy_volume);
45 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_BACKGROUND), _comp_mod->conf->effect_policy_background);
46 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_KEYBOARD), _comp_mod->conf->effect_policy_isf_keyboard);
47 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_SUB), _comp_mod->conf->effect_policy_isf_sub);
48 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SETUP_WIZARD), _comp_mod->conf->effect_policy_setup_wizard);
49 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOAST), _comp_mod->conf->effect_policy_toast);
50 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_APP_POPUP), _comp_mod->conf->effect_policy_app_popup);
56 e_mod_comp_policy_shutdown(void)
58 if (shadow_hash) eina_hash_free(shadow_hash);
64 e_mod_comp_policy_app_launch_check(E_Comp_Win *cw)
66 E_CHECK_RETURN(cw, 0);
67 E_CHECK_RETURN(cw->bd, 0);
68 E_CHECK_RETURN(cw->bd->zone, 0);
69 if (TYPE_NORMAL_CHECK(cw) && REGION_EQUAL_TO_ZONE(cw, cw->bd->zone))
75 e_mod_comp_policy_app_close_check(E_Comp_Win *cw)
77 E_CHECK_RETURN(cw, 0);
78 E_CHECK_RETURN(cw->bd, 0);
79 E_CHECK_RETURN(cw->bd->zone, 0);
80 if (TYPE_NORMAL_CHECK(cw) && REGION_EQUAL_TO_ZONE(cw, cw->bd->zone))
86 e_mod_comp_policy_win_shadow_group_get(E_Comp_Win *cw)
89 E_CHECK_RETURN(cw, 0);
90 type = e_mod_comp_win_type_get(cw);
91 return eina_hash_find(shadow_hash, e_util_winid_str_get(type));
94 /* when receiving border show event for the home window,
95 * check before running app closing effect for given normal window.
96 * exceptional windows: lock, setup wizard
97 * otherwise: do app closing effect
100 e_mod_comp_policy_home_app_win_check(E_Comp_Win *cw)
102 E_CHECK_RETURN(cw, EINA_FALSE);
104 if (TYPE_LOCKSCREEN_CHECK(cw) ||
105 TYPE_SETUP_WIZARD_CHECK(cw))
113 /* local subsystem functions */