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)
{
{
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);
}
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
// 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;
}
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;
+}
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
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);
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;
{
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);
}
}
}
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;