e_client: check ec is in the Zone while focusable check 31/253631/1
authorJunseok, Kim <juns.kim@samsung.com>
Mon, 8 Feb 2021 12:37:20 +0000 (21:37 +0900)
committerJunSeok Kim <juns.kim@samsung.com>
Tue, 16 Feb 2021 05:08:03 +0000 (05:08 +0000)
Change-Id: Ibff341d0b57d9bc07022d794d11c135dd3447072
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
(cherry picked from commit 3e52c928f2c618821a29490851e38cd34e4ed39d)

src/bin/e_client.c

index 48b80bdf96144009513191240f6f9b0868a9a18c..65916b241f6698bbad586f41a45efcb362c5d951 100644 (file)
@@ -883,8 +883,10 @@ _e_client_check_really_iconified(E_Client *ec)
 static Eina_Bool
 _e_client_focus_can_take(E_Client *ec)
 {
+   E_Zone *zone = NULL;
    E_Client *child_ec = NULL;
    E_Client *above_ec = NULL;
+   int x = 0, y = 0, w = 0, h = 0;
 
    if (!ec) return EINA_FALSE;
    if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE;
@@ -904,6 +906,15 @@ _e_client_focus_can_take(E_Client *ec)
                return EINA_FALSE;
           }
      }
+   zone = ec->zone;
+   if (zone)
+     {
+        e_client_geometry_get(ec, &x, &y, &w, &h);
+        if (!E_INTERSECTS(zone->x, zone->y, zone->w, zone->h, x, y, w, h))
+          {
+             return EINA_FALSE;
+          }
+     }
 
    above_ec = _e_client_check_fully_contain_by_above(ec, EINA_FALSE);
    if (!above_ec) return EINA_TRUE;