From 88b6cd5e147328160a73cc16d4bb0f7de9a318af Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Tue, 11 May 2021 09:36:07 +0900 Subject: [PATCH] e_policy: restore ec's layer when floating is unset 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 | 2 ++ src/bin/e_policy_wl.c | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bin/e_client.h b/src/bin/e_client.h index b228bbc..1e07aef 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -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) \ diff --git a/src/bin/e_policy_wl.c b/src/bin/e_policy_wl.c index 4c4ae3e..a42fd25 100644 --- a/src/bin/e_policy_wl.c +++ b/src/bin/e_policy_wl.c @@ -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); -- 2.7.4