forked from enlightenment/enlightenment
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.
This commit is contained in:
parent
7d2be9edcc
commit
a92840b13f
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue