e_desk_area: make e_desk_area_ec_reassign 53/299853/2
authorSooChan Lim <sc1.lim@samsung.com>
Tue, 29 Aug 2023 00:59:17 +0000 (09:59 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Wed, 11 Oct 2023 06:17:48 +0000 (06:17 +0000)
and use this api instead of e_client_desk_area_set

Change-Id: Ic7a8dc8208cdd20b46c17e2c5601c26b2ae881ea

src/bin/e_client.c
src/bin/e_desk.c
src/bin/e_desk_area.c
src/bin/e_desk_area.h
src/bin/e_info_server.c
src/bin/e_policy_stack.c
src/bin/e_zone.c

index 44f88d3..9a6107c 100644 (file)
@@ -8448,6 +8448,7 @@ e_client_desk_area_enable_set(E_Client *ec, Eina_Bool enable)
    return EINA_TRUE;
 }
 
+//FIXME: use e_desk_area_ec_reassign(eda, ec) instead of this api
 E_API Eina_Bool
 e_client_desk_area_set(E_Client *ec, E_Desk_Area *eda)
 {
index f244a14..5bdc50a 100644 (file)
@@ -780,7 +780,7 @@ _e_desk_client_set(E_Desk *desk, E_Client *ec)
           {
              E_Desk_Area *eda;
              eda = e_desk_desk_area_base_get(desk);
-             e_client_desk_area_set(ec, eda);
+             e_desk_area_ec_reassign(eda, ec);
           }
 
         e_client_desk_area_enable_set(ec, EINA_TRUE);
@@ -2076,7 +2076,7 @@ _e_desk_desk_area_check_ec_in_desk_area(E_Desk *desk)
      }
 
    EINA_LIST_FREE(ec_list, ec)
-      e_client_desk_area_set(ec, desk->desk_area.base);
+      e_desk_area_ec_reassign(desk->desk_area.base, ec);
 }
 
 E_API Eina_Bool
index bf7178c..dc2851d 100644 (file)
@@ -310,8 +310,8 @@ void _e_desk_area_disable(E_Desk_Area *eda)
              // restore ec's original geometry (changing real geometry or using transform)
              _e_desk_area_ec_geometry_restore(eda, ec);
 
-             e_client_desk_area_set(ec, NULL);
-          }
+             e_desk_area_ec_remove(eda, ec);
+         }
         eina_list_free(list);
         list = NULL;
 
@@ -1067,4 +1067,35 @@ e_desk_area_hook_del(E_Desk_Area_Hook * dgh)
      }
    else
      _e_desk_area_hooks_delete++;
-}
\ No newline at end of file
+}
+
+E_API Eina_Bool
+e_desk_area_ec_reassign(E_Desk_Area *eda, E_Client *ec)
+{
+   E_Desk_Area *old_edg;
+
+   if (!ec) return EINA_FALSE;
+
+#if 0 // if this is removed.. then below if (eda != old_edg) is removed also...
+   if (ec->desk_area.desk_area == eda)
+     return EINA_TRUE;
+#endif
+
+   ELOGF("EDG", "Desk Group Set (new:%p, old:%p)", ec, eda, ec->desk_area.desk_area);
+   old_edg = ec->desk_area.desk_area;
+   if (old_edg)
+     e_desk_area_ec_remove(old_edg, ec);
+
+   ec->desk_area.desk_area = eda;
+   e_desk_area_ec_add(eda, ec);
+
+#if 0 // if this is removed.. then above if (ec->desk_area.desk_area == eda) is removed also...
+   if (eda != old_edg)
+#endif
+     {
+        e_desk_area_ec_update(eda, ec);
+        e_desk_area_ec_rearrange(ec->desk_area.desk_area, ec);
+     }
+
+   return EINA_TRUE;
+}
index fb7b720..e651bef 100644 (file)
@@ -105,6 +105,8 @@ EINTERN Eina_Bool        e_desk_area_hook_call(E_Desk_Area *eda, E_Desk_Area_Hoo
 E_API E_Desk_Area_Hook *e_desk_area_hook_add(E_Desk_Area_Hook_Point hookpoint, E_Desk_Area_Hook_Cb func, const void *data);
 E_API void               e_desk_area_hook_del(E_Desk_Area_Hook *dgh);
 
+E_API Eina_Bool       e_desk_area_ec_reassign(E_Desk_Area *eda, E_Client *ec);
+
 extern E_API int E_EVENT_DESK_AREA_CHANGE;
 
 #endif
index 9ba1286..d38180f 100644 (file)
@@ -4042,7 +4042,7 @@ _e_info_server_cb_desk_area_new_sub1(const Eldbus_Service_Interface *iface EINA_
 
    EINA_LIST_REVERSE_FOREACH(ec_list, l, ec)
      {
-        e_client_desk_area_set(ec, _edg_sub1);
+        e_desk_area_ec_reassign(_edg_sub1, ec);
      }
 
    //e_desk_area_all_ec_update(_edg_sub1);
@@ -4069,9 +4069,9 @@ _e_info_server_cb_desk_area_new_sub2(const Eldbus_Service_Interface *iface EINA_
    E_CLIENT_FOREACH(ec)
      {
         if (e_policy_client_is_home_screen(ec))
-          e_client_desk_area_set(ec, _edg_sub2);
+          e_desk_area_ec_reassign(_edg_sub2, ec);
         else if (e_policy_client_is_quickpanel(ec))
-          e_client_desk_area_set(ec, _edg_sub2);
+          e_desk_area_ec_reassign(_edg_sub2, ec);
      }
 
    return reply;
index 1138278..5d23b2d 100644 (file)
@@ -283,7 +283,7 @@ _e_policy_stack_fetch_transient(E_Client *ec)
           {
              if (ec->desk_area.desk_area != parent->desk_area.desk_area)
                {
-                  e_client_desk_area_set(ec, parent->desk_area.desk_area);
+                  e_desk_area_ec_reassign(parent->desk_area.desk_area, ec);
                }
           }
      }
index 419a4ac..52535f5 100644 (file)
@@ -447,7 +447,8 @@ _e_zone_cb_hook_client_del(void *d, E_Client *ec)
    ec->desk_zoom.transform = NULL;
    E_FREE_FUNC(ec->desk_zoom.hook_subsurf_create, e_comp_wl_hook_del);
 
-   e_client_desk_area_set(ec, NULL);
+   if (ec->desk_area.desk_area)
+     e_desk_area_ec_remove(ec->desk_area.desk_area, ec);
    e_util_transform_del(ec->desk_area.transform);
    ec->desk_area.transform = NULL;