{
#ifdef REFACTOR_DESK_AREA
E_Desk_Private_Client *desk_client;
+ E_Desk_Area *eda;
#endif
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
#ifdef REFACTOR_DESK_AREA
+ if (!e_desk_has_ec(desk, ec)) return;
+
ELOGF("DESK", "CLIENT REMOVE. desk:%p", ec, desk);
desk_client = _e_desk_private_client_get(ec);
EINA_SAFETY_ON_NULL_RETURN(desk_client);
+ eda = e_desk_desk_area_find_by_ec(desk, ec);
+ EINA_SAFETY_ON_NULL_RETURN(eda);
+
+ e_desk_area_ec_remove(eda, ec);
+
_e_desk_private_client_del(desk_client);
#else
_e_desk_smart_client_del(desk->smart_obj, ec);
return e_desk_area_bottom_ec_get(eda);
}
+
+EINTERN E_Desk_Area *
+e_desk_desk_area_find_by_ec(E_Desk *desk, E_Client *ec)
+{
+ E_Desk_Area *eda;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(desk, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ec, NULL);
+
+ if (!e_desk_has_ec(desk, ec)) return NULL;
+
+ // TODO: find the desk_area which has the ec among the desk_areas in this desk
+ eda = desk->desk_area.base;
+ if (e_desk_area_has_ec(eda, ec))
+ return eda;
+
+ return NULL;
+}
#endif
EINTERN void
//#ifdef REFACTOR_DESK_AREA
EINTERN E_Client *e_desk_top_ec_get(E_Desk *desk);
EINTERN E_Client *e_desk_bottom_ec_get(E_Desk *desk);
+EINTERN E_Desk_Area *e_desk_desk_area_find_by_ec(E_Desk *desk, E_Client *ec);
//#endif
extern EINTERN int E_EVENT_DESK_SHOW;