raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=11065a905c27c0f188338bcd847019b001e4924d

commit 11065a905c27c0f188338bcd847019b001e4924d
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Mon Apr 12 16:01:20 2021 +0100

    e - fix restore of window visiblity and events on e restarts
    
    you no longer have to cycle virtual desks to fix window events. this
    fixes that.
    
    @fix
---
 src/bin/e_main.c | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_main.c b/src/bin/e_main.c
index ec3076280..8f3d3e19f 100644
--- a/src/bin/e_main.c
+++ b/src/bin/e_main.c
@@ -1648,16 +1648,40 @@ _e_main_desk_restore(void)
         unsigned int desks[2];
         Ecore_X_Atom a;
 
+        // hide all windows first as desk show will restore
+        E_CLIENT_FOREACH(ec)
+          {
+             ec->hidden = 1;
+             evas_object_show(ec->frame);
+             ec->changes.visible = 0;
+             evas_object_hide(ec->frame);
+             e_client_comp_hidden_set(ec, EINA_TRUE);
+          }
         EINA_LIST_FOREACH(e_comp->zones, l, zone)
           {
+             desk = NULL;
+
              snprintf(buf, sizeof(buf), "E_DESK_%i", zone->num);
              a = ecore_x_atom_get(buf);
              ret = ecore_x_window_prop_card32_get(e_comp->root, a, desks, 2);
              if (ret == 2)
                {
                   desk = e_desk_at_xy_get(zone, desks[0], desks[1]);
-                  if (!desk) continue;
-                  e_desk_show(desk);
+                  if (desk) e_desk_show(desk);
+               }
+             if (!desk) desk = e_desk_current_get(zone);
+             if (desk)
+               {
+                  // ensure windows for this desk are shown
+                  E_CLIENT_REVERSE_FOREACH(ec)
+                    {
+                       if ((ec->desk == desk) || (ec->sticky))
+                         {
+                            ec->hidden = 0;
+                            e_client_comp_hidden_set(ec, ec->hidden || 
ec->shaded);
+                            evas_object_show(ec->frame);
+                         }
+                    }
                }
           }
         E_CLIENT_REVERSE_FOREACH(ec)

-- 


Reply via email to