raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a92840b13f5a1a605575dbf7e14b85a668827730
commit a92840b13f5a1a605575dbf7e14b85a668827730 Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Mon Feb 1 13:05:55 2021 +0000 work around clients like firefox with csd and broken iconify logic so simple version: if firefox does CSD then when u press its minimize (iconify) button it ASSUMES it will be iconified. it ASSUMES WM_STATE will transition to iconic annd then back. it will cease rendering lots of things when it thinks it is iconified when it isn't - e was refusing because e wants windows tyo stay with live content so in ibar and winlist and so on they keep showing updates). this assumption that a wm will always iconify you when asked is wrong. a wm can refuse. so basically firefox is brokne in its assumptions and logic. so work around it but this leads to other fun things like clients stopping rendering when iconified... as they now are told theya have been iconified. --- src/bin/e_comp_x.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 05a36fbd2..bada0f92a 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -1154,7 +1154,15 @@ _e_comp_x_client_hide(E_Client *ec) if ((!ec->iconic) && (!ec->override)) ecore_x_window_prop_card32_set(e_client_util_win_get(ec), E_ATOM_MAPPED, &visible, 1); - _e_comp_x_client_data_get(ec)->iconic = ec->iconic && (!e_comp_object_mirror_visibility_check(ec->frame)); + _e_comp_x_client_data_get(ec)->iconic = ec->iconic +// XXX: if we tell apps they are iconic.. they may stop rendering and this +// means our miniatures we use in ibar, ibox and winlist alt-tab dont udpate +// ... we could i guess setn fake wm state changes to normal when these are +// visible and then toggle iconic on and off while still visually hiding +// the client... but clients that assume they will be iconic when they ask +// are mistaken ... so for now disable this until we have a debate on it +// && (!e_comp_object_mirror_visibility_check(ec->frame)) + ; if (ec->unredirected_single || _e_comp_x_client_data_get(ec)->iconic) ecore_x_window_hide(_e_comp_x_client_window_get(ec)); if (_e_comp_x_client_data_get(ec)->iconic) --
