e_policy: restore ec's layer when floating is unset 05/258105/2
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 11 May 2021 00:36:07 +0000 (09:36 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Tue, 11 May 2021 04:59:20 +0000 (04:59 +0000)
When a floating mode was unset, e restored ec's layer to NORMAL only.

However, the layer of ec can be another layer (such as NORMAL, NOTIFICATION, etc.).
So, we changed code to restore its layer to original layer.

Change-Id: Ie528e6ede7d12d9fd795b0266d04f473d301fb63

src/bin/e_client.h
src/bin/e_policy_wl.c

index b228bbc..1e07aef 100644 (file)
@@ -1023,6 +1023,8 @@ struct E_Client
       int count;
       Eina_Bool running;
    } show_pending;
+
+   E_Layer floating_saved_layer;
 };
 
 #define e_client_focus_policy_click(ec) \
index 4c4ae3e..a42fd25 100644 (file)
@@ -2747,9 +2747,14 @@ _e_policy_wl_floating_mode_apply(E_Client *ec, Eina_Bool floating)
    if (ec->frame)
      {
         if (floating)
-          e_client_layer_set(ec, E_LAYER_CLIENT_ABOVE);
+          {
+             ec->floating_saved_layer = ec->layer;
+             e_client_layer_set(ec, E_LAYER_CLIENT_ABOVE);
+          }
         else
-          e_client_layer_set(ec, E_LAYER_CLIENT_NORMAL);
+          {
+             e_client_layer_set(ec, ec->floating_saved_layer);
+          }
      }
 
    EC_CHANGED(ec);