{
EINA_LIST_FOREACH(e_comp->zones, zl, zone)
{
+ e_visibility_changed = EINA_FALSE;
+
if (e_comp_visibility_calculation_get())
e_visibility_changed = e_policy_zone_visibility_calculate(zone);
- if (check_focus ||
- (e_client_focused_get() == NULL) ||
- (e_visibility_changed))
+ if (zone->focus &&
+ (check_focus ||
+ (e_zone_focused_client_get(zone) == NULL) ||
+ e_visibility_changed))
{
- // FIXME: Only the default zone(screen) update the focus.
- // Multi-zones(Multi-screens) are not supported yet.
- if (!zone->focus) continue;
e_focus_update(zone->focus);
}
return NULL;
}
}
+ else
+ {
+ // FIXME: the zone except primary zone takes topmost focus policy for temporary.
+ // please remove it and above after when supports multi focus policy.
+ zone->focus = e_focus_new(policy_zone, E_FOCUS_EXT_TOP_STACK);
+ if (!zone->focus)
+ {
+ e_object_unref(E_OBJECT(zone));
+ ERR("Fail to create focus object at zone %d", zone->num);
+ E_FREE(policy_zone);
+ return NULL;
+ }
+ }
// CLIENT HOOK Handlers
E_LIST_HOOK_APPEND(zone->ec_hooks, E_CLIENT_HOOK_NEW_CLIENT_POST, _e_policy_zone_cb_hook_client_new_client_post, zone);