if (zone_client->policy_zone == policy_zone) return;
ELOGF("POL_ZONE", "E_CLIENT(%p):%s: Already have zone client, remove it", ec, ec, e_client_icccm_title_get(ec));
+
+ // remove from desk here cause zone didn't have zone_client_remove yet
+ desk = e_zone_desk_find_by_ec(zone_client->policy_zone->zone, ec);
+ if (desk) e_desk_client_remove(desk, ec);
_e_policy_zone_private_client_del(zone_client);
}
_e_policy_zone_private_client_del(E_Policy_Zone_Private_Client *zone_client)
{
E_Policy_Zone *policy_zone;
- E_Zone *zone;
E_Client *ec;
- E_Desk *desk;
policy_zone = zone_client->policy_zone;
ec = zone_client->ec;
- zone = policy_zone->zone;
- desk = e_zone_desk_find_by_ec(zone, ec);
- EINA_SAFETY_ON_NULL_RETURN(desk);
wl_signal_emit_mutable(&policy_zone->events.client_remove, ec);
- e_desk_client_remove(desk, ec);
-
wl_list_remove(&zone_client->client_focus_unset.link);
wl_list_remove(&zone_client->client_above_get.link);
wl_list_remove(&zone_client->client_below_get.link);