struct wl_listener zone_desk_current_set;
struct wl_listener zone_desk_find_by_ec;
+ struct wl_listener policy_desk_client_add;
+
struct wl_listener zone_client_top_get; // from e_zone
struct wl_listener zone_client_bottom_get; // from e_zone
struct wl_listener zone_client_above_get; // from e_zone
}
}
+static void
+_e_policy_zone_cb_policy_desk_client_add(struct wl_listener *listener, void *data)
+{
+ E_Policy_Zone *policy_zone;
+ E_Client *ec;
+
+ policy_zone = wl_container_of(listener, policy_zone, policy_desk_client_add);
+ ec = (E_Client *) data;
+
+ if (e_zone_has_ec(policy_zone->zone, ec)) return;
+
+ e_zone_client_add(policy_zone->zone, ec);
+}
+
#ifdef EC_IS_NOT_VISIBLE
# undef EC_IS_NOT_VISIBLE
{
E_Zone *zone;
E_Desk *desk, *new_desk, *last_desk;
+ E_Policy_Desk *pd;
E_Client *ec;
Eina_List *l, *del_list = NULL;
size_t current_count;
}
policy_zone->desk_list = eina_list_append(policy_zone->desk_list, new_desk);
- e_policy_desk_new(new_desk);
+ pd = e_policy_desk_new(new_desk);
+ if (!pd)
+ {
+ ERR("zone(ID:%d):%p Failed to create policy desk area of desk(ID:%d):%p", zone->id, zone, new_id, new_desk);
+ }
+ else
+ {
+ policy_zone->policy_desk_client_add.notify = _e_policy_zone_cb_policy_desk_client_add;
+ e_policy_desk_client_add_listener_add(pd, &policy_zone->policy_desk_client_add);
+ }
e_desk_show(new_desk);
}
wl_list_remove(&policy_zone->zone_desk_current_set.link);
wl_list_remove(&policy_zone->zone_desk_find_by_ec.link);
+ wl_list_remove(&policy_zone->policy_desk_client_add.link);
wl_list_remove(&policy_zone->focus_focused_ec_changed.link);
wl_list_remove(&policy_zone->zone_client_visible_below_get.link);