E_Desk *desk;
E_Zone *zone;
- struct wl_listener desk_new;
+ struct wl_listener policy_desk_area_client_add;
struct wl_listener desk_free;
struct wl_listener top_visible_get;
struct wl_listener name_set;
sc->member_del = _e_policy_desk_smart_member_del;
}
+static void
+_e_policy_desk_cb_policy_desk_area_client_add(struct wl_listener *listener, void *data)
+{
+ E_Policy_Desk *pd;
+ E_Client *ec;
+
+ pd = wl_container_of(listener, pd, policy_desk_area_client_add);
+ ec = (E_Client *) data;
+
+ if (e_desk_has_ec(pd->desk, ec)) return;
+
+ e_desk_client_add(pd->desk, ec);
+}
+
static void
_e_policy_desk_cb_desk_free(struct wl_listener *listener, void *data)
{
{
E_Policy_Zone *policy_zone;
E_Policy_Desk *pd;
+ E_Policy_Desk_Area *pda;
E_Client *ec;
E_Policy_Client *pc;
E_Zone *zone;
eina_hash_add(hash_policy_desks, &desk, pd);
- e_policy_desk_area_new(desk->desk_area.base);
+ pda = e_policy_desk_area_new(desk->desk_area.base);
+ if (!pda)
+ {
+ ERR("Failed to create base policy desk area of desk area(ID:%d):%p", desk->desk_area.base->id, desk->desk_area.base);
+ }
+ else
+ {
+ pd->policy_desk_area_client_add.notify = _e_policy_desk_cb_policy_desk_area_client_add;
+ e_policy_desk_area_client_add_listener_add(pda, &pd->policy_desk_area_client_add);
+ }
/* add clients */
E_ZONE_CLIENT_FOREACH(zone, ec)