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)

-- 


Reply via email to