e_client: add code to handle raising transient_for_below window 77/261477/2
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 20 Jul 2021 00:38:22 +0000 (09:38 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Tue, 20 Jul 2021 04:43:38 +0000 (13:43 +0900)
When a child window which set transient_for_below and belog_to_parent properties
requests to raise, e raises it only between siblings and doesn't raise it on the parent.
In other words, the child window is always placed under the parent.

Change-Id: I167207784bec461865eff72b4105502b294d15c9

src/bin/e_client.c

index d0454fdc2cbc86c568e6478cc2bdb7cea7a6fe73..71b0b58b1f1c61d13e1a09ead54a35ddec932e68 100644 (file)
@@ -8168,6 +8168,13 @@ e_client_desk_group_set(E_Client *ec, E_Desk_Group *edg)
    return EINA_TRUE;
 }
 
+static void
+_raise_between_sibling_under_parent(E_Client *ec)
+{
+   ELOGF("POL", "RAISE child window between sibling. So, stack below under the parent (win:%zx, ec:%p)", ec, e_client_util_win_get(ec->parent), ec->parent);
+   e_client_stack_below(ec, ec->parent);
+}
+
 static void
 _raise_between_sibling_on_parent(E_Client *ec)
 {
@@ -8193,7 +8200,10 @@ _raise_between_sibling_on_parent(E_Client *ec)
 static void
 _raise_belong_to_parent(E_Client *ec)
 {
-   _raise_between_sibling_on_parent(ec);
+   if (e_client_transient_policy_get(ec) == E_TRANSIENT_BELOW)
+     _raise_between_sibling_under_parent(ec);
+   else
+     _raise_between_sibling_on_parent(ec);
 }
 
 E_API void