e_zone: remove the use of ec->zone 91/295391/1
authorSooChan Lim <sc1.lim@samsung.com>
Wed, 5 Jul 2023 04:34:29 +0000 (13:34 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 6 Jul 2023 08:50:48 +0000 (17:50 +0900)
The zone variable at ec will be deprecated.

Change-Id: I2c0d67cee9908c0981348803bd7ae81f270b148a

src/bin/e_desk.c
src/bin/e_zone.c

index 83b220e..d4f58f0 100644 (file)
@@ -474,7 +474,7 @@ e_desk_last_focused_focus(E_Desk *desk)
    EINA_LIST_FOREACH(e_client_focus_stack_get(), l, ec)
      {
         if ((!ec->iconic) && (evas_object_visible_get(ec->frame) || ec->changes.visible) &&
-            ((ec->desk == desk) || ((ec->zone == desk->zone) && ec->sticky)) &&
+            ((ec->desk == desk) || (e_zone_has_ec(desk->zone, ec) && ec->sticky)) &&
             (ec->icccm.accepts_focus || ec->icccm.take_focus) &&
             (ec->netwm.type != E_WINDOW_TYPE_DOCK) &&
             (ec->netwm.type != E_WINDOW_TYPE_TOOLBAR) &&
@@ -1541,6 +1541,7 @@ _e_desk_transition_setup(E_Client *ec, int dx, int dy, int state)
 static void
 _e_desk_show_end(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
 {
+   E_Zone *zone;
    E_Client *ec = data;
 
    ec->desk->animate_count--;
@@ -1548,7 +1549,8 @@ _e_desk_show_end(void *data, Evas_Object *obj EINA_UNUSED, const char *emission
    e_comp_object_effect_unclip(ec->frame);
    ec->hidden = 0;
    if (!ec->visible) evas_object_show(ec->frame);
-   if (ec->desk != e_desk_current_get(ec->zone)) return;
+   zone = e_comp_zone_find_by_ec(ec);
+   if (ec->desk != e_desk_current_get(zone)) return;
    if (!ec->desk->animate_count) e_desk_flip_end(ec->desk);
 }
 
index 896a6a5..331e345 100644 (file)
@@ -345,7 +345,7 @@ e_zone_reconfigure_clients(E_Zone *zone, int dx, int dy, int dw, int dh)
 
    E_CLIENT_FOREACH(ec)
      {
-        if (ec->zone != zone) continue;
+        if (!e_zone_has_ec(zone, ec)) continue;
 
         if ((dx != 0) || (dy != 0))
           evas_object_move(ec->frame, ec->x + dx, ec->y + dy);
@@ -1175,7 +1175,7 @@ e_zone_obstacle_add(E_Zone *zone, E_Client *ec, Eina_Rectangle *geom, Eina_Bool
    EINA_SAFETY_ON_NULL_RETURN_VAL(zone, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(geom, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(zone == ec->zone, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(e_zone_has_ec(zone, ec), EINA_FALSE);
 
    // check in the list...
    EINA_LIST_FOREACH(zone->obstacles, l, obs)
@@ -1213,7 +1213,7 @@ e_zone_obstacle_update(E_Zone *zone, E_Client *ec, Eina_Rectangle *geom, Eina_Bo
 
    if (!zone) return EINA_FALSE;
    if (!ec) return EINA_FALSE;
-   if (zone != ec->zone) return EINA_FALSE;
+   if (!e_zone_has_ec(zone, ec)) return EINA_FALSE;
 
    EINA_LIST_FOREACH(zone->obstacles, l, obs)
      {
@@ -1264,7 +1264,7 @@ e_zone_obstacle_remove(E_Zone *zone, E_Client *ec)
 
    if (!zone) return;
    if (!ec) return;
-   if (zone != ec->zone) return;
+   if (!e_zone_has_ec(zone, ec)) return;
 
    EINA_LIST_FOREACH_SAFE(zone->obstacles, l, ll, obs)
      {
@@ -1985,16 +1985,20 @@ e_zone_screen_splitscreen_enable(E_Zone *zone)
 EINTERN void
 e_zone_client_add(E_Zone *zone, E_Client *ec)
 {
+   E_Zone *ec_zone;
+
+   ec_zone = e_comp_zone_find_by_ec(ec);
+
    /* if the window does not lie in the new zone, move it so that it does */
    if (!E_INTERSECTS(ec->x, ec->y, ec->w, ec->h, zone->x, zone->y, zone->w, zone->h))
      {
         int x, y;
 
-        if (ec->zone)
+        if (ec_zone)
           {
              /* first guess -- get offset from old zone, and apply to new zone */
-             x = zone->x + (ec->x - ec->zone->x);
-             y = zone->y + (ec->y - ec->zone->y);
+             x = zone->x + (ec->x - ec_zone->x);
+             y = zone->y + (ec->y - ec_zone->y);
           }
         else
           x = ec->x, y = ec->y;
@@ -2023,8 +2027,8 @@ e_zone_client_add(E_Zone *zone, E_Client *ec)
    //        2. This code should be removed because e_client_zone_set() is called
    //        inside e_client_desk_set(). It makes the infinite loop calls(circular calls).
    //        e_client_desk_set() -> e_client_zone_set() -> e_zone_client_add() -> e_client_desk_set() -> ... and so on.
-   if ((!ec->desk) || (ec->desk->zone != ec->zone))
-     e_client_desk_set(ec, e_desk_current_get(ec->zone));
+   if ((!ec->desk) || (ec->desk->zone != ec_zone))
+     e_client_desk_set(ec, e_desk_current_get(ec_zone));
 
    e_client_res_change_geometry_save(ec);
    e_client_res_change_geometry_restore(ec);