From 5954772b02f81e5aaeddd6275b30bc085b66f02f Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Thu, 3 Mar 2022 16:27:30 +0900 Subject: [PATCH] e_policy_wl: update states(iconic, visibility) of transient below child while changing parent's alpha value There was a bug that the e didn't send an iconic state change event to the transient below child when its parent's alpha value is changed. This patch resolve this problem. Change-Id: I5f08a85a230ecf48f1bb2a9ea500b87cf7746510 --- src/bin/e_policy_wl.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/bin/e_policy_wl.c b/src/bin/e_policy_wl.c index 37c6a64616..e2c340585e 100644 --- a/src/bin/e_policy_wl.c +++ b/src/bin/e_policy_wl.c @@ -7776,6 +7776,27 @@ _e_policy_wl_cb_hook_shell_surface_ready(void *d, E_Client *ec) } } +static void +_e_policy_wl_cb_hook_alpha_change(void *data, E_Client *ec) +{ + if (!ec) return; + if (!ec->argb) return; + if (!ec->transients) return; + if (!e_policy_visibility_client_is_uniconify_render_running(ec)) return; + + E_Client *child; + Eina_List *list = eina_list_clone(ec->transients); + + EINA_LIST_FREE(list, child) + { + if (e_client_transient_policy_get(child) == E_TRANSIENT_BELOW) + { + ELOGF("POL_VIS", "Uniconify below child(win:%zx, ec:%p) by changing alpha", ec, e_client_util_win_get(child), child); + e_policy_client_uniconify_by_visibility(child); + } + } +} + void e_policy_wl_generate_request(E_Client *ec, E_Policy_Wl_Gen_Request type) { @@ -8044,6 +8065,7 @@ e_policy_wl_init(void) E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_OFF, _e_policy_wl_cb_scrsaver_off, NULL); E_COMP_WL_HOOK_APPEND(hooks_cw, E_COMP_WL_HOOK_SHELL_SURFACE_READY, _e_policy_wl_cb_hook_shell_surface_ready, NULL); + E_COMP_WL_HOOK_APPEND(hooks_cw, E_COMP_WL_HOOK_CLIENT_ALPHA_CHANGE, _e_policy_wl_cb_hook_alpha_change, NULL); E_EVENT_POLICY_INDICATOR_STATE_CHANGE = ecore_event_type_new(); E_EVENT_POLICY_INDICATOR_OPACITY_MODE_CHANGE = ecore_event_type_new(); -- 2.34.1