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), "shadow" );
18 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DESKTOP), "no-effect" );
19 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DOCK), "shadow_fade" );
20 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLBAR), "no-effect" );
21 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENU), "no-effect" );
22 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UTILITY), "no-effect" );
23 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SPLASH), "no-effect" );
24 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DIALOG), "dialog" );
25 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NORMAL), "shadow_fade" );
26 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DROPDOWN_MENU), "no-effect" );
27 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_POPUP_MENU), "shadow" );
28 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLTIP), "shadow" );
29 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NOTIFICATION), "dialog" );
30 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_COMBO), "no-effect" );
31 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DND), "no-effect" );
32 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENUSCREEN), "home_screen" );
33 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL_BASE),"quickpanel" );
34 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL), "quickpanel" );
35 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TASKMANAGER), "taskmgr" );
36 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LIVEMAGAZINE), "home_screen" );
37 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LOCKSCREEN), "lockscreen" );
38 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_INDICATOR), "indicator" );
39 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TICKERNOTI), "dialog_without_dim");
40 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DEBUGGING_INFO), "no-effect" );
41 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_APPTRAY), "app_tray" );
42 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MINI_APPTRAY), "app_tray" );
43 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_VOLUME), "dialog_without_dim");
44 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_BACKGROUND), "no-effect" );
45 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_KEYBOARD), "keyboard" );
46 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_SUB), "no-effect" );
47 eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SETUP_WIZARD), "no-effect" );
53 e_mod_comp_policy_shutdown(void)
55 if (shadow_hash) eina_hash_free(shadow_hash);
61 e_mod_comp_policy_app_launch_check(E_Comp_Win *cw)
63 E_CHECK_RETURN(cw, 0);
64 E_CHECK_RETURN(cw->bd, 0);
65 E_CHECK_RETURN(cw->bd->zone, 0);
66 if (TYPE_NORMAL_CHECK(cw) && REGION_EQUAL_TO_ZONE(cw, cw->bd->zone))
72 e_mod_comp_policy_app_close_check(E_Comp_Win *cw)
74 E_CHECK_RETURN(cw, 0);
75 E_CHECK_RETURN(cw->bd, 0);
76 E_CHECK_RETURN(cw->bd->zone, 0);
77 if (TYPE_NORMAL_CHECK(cw) && REGION_EQUAL_TO_ZONE(cw, cw->bd->zone))
83 e_mod_comp_policy_win_shadow_group_get(E_Comp_Win *cw)
86 E_CHECK_RETURN(cw, 0);
87 type = e_mod_comp_win_type_get(cw);
88 return eina_hash_find(shadow_hash, e_util_winid_str_get(type));
91 /* when receiving border show event for the home window,
92 * check before running app closing effect for given normal window.
93 * exceptional windows: lock, setup wizard
94 * otherwise: do app closing effect
97 e_mod_comp_policy_home_app_win_check(E_Comp_Win *cw)
99 E_CHECK_RETURN(cw, EINA_FALSE);
101 if (TYPE_LOCKSCREEN_CHECK(cw) ||
102 TYPE_SETUP_WIZARD_CHECK(cw))
110 /* local subsystem functions */