_e_policy_client_launcher_set(E_Policy_Client *pc)
{
E_Policy_Client *pc2;
+ E_Zone *zone;
+
+ zone = pc->zone;
+ EINA_SAFETY_ON_NULL_RETURN(zone);
- pc2 = e_policy_client_launcher_get(pc->ec->zone);
+ pc2 = e_policy_client_launcher_get(zone);
if (pc2) return;
if (pc->ec->netwm.type != e_config->launcher.type)
_e_policy_client_maximize_pre(E_Policy_Client *pc)
{
E_Client *ec;
+ E_Zone *zone;
int zx, zy, zw, zh;
ec = pc->ec;
+ zone = pc->zone;
+ if (!zone) return;
if (ec->desk->visible)
- e_zone_useful_geometry_get(ec->zone, &zx, &zy, &zw, &zh);
+ e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh);
else
{
- zx = ec->zone->x;
- zy = ec->zone->y;
- zw = ec->zone->w;
- zh = ec->zone->h;
+ zx = zone->x;
+ zy = zone->y;
+ zw = zone->w;
+ zh = zone->h;
}
ec->client.x = zx;
static void
_e_policy_cb_hook_client_new_post(void *d EINA_UNUSED, E_Client *ec)
{
- E_Policy_Client *pc;
-
if (EINA_UNLIKELY(!ec))
return;
if (EINA_UNLIKELY(!ec))
return;
- e_tzsh_indicator_srv_ower_win_update(ec->zone);
- e_policy_wl_win_brightness_apply(ec);
- e_policy_wl_client_del(ec);
+ pc = eina_hash_find(hash_policy_clients, &ec);
+ if (!pc) return;
+ if (!pc->zone) return;
+ if (!pc->ec) return;
- if (e_policy_client_is_lockscreen(ec))
- e_policy_stack_clients_restack_above_lockscreen(ec, EINA_FALSE);
+ e_tzsh_indicator_srv_ower_win_update(pc->zone);
+ e_policy_wl_win_brightness_apply(pc->ec);
+ e_policy_wl_client_del(pc->ec);
- e_policy_stack_cb_client_remove(ec);
+ if (e_policy_client_is_lockscreen(pc->ec))
+ e_policy_stack_clients_restack_above_lockscreen(pc->ec, EINA_FALSE);
+
+ e_policy_stack_cb_client_remove(pc->ec);
e_client_visibility_calculate();
- pc = eina_hash_find(hash_policy_clients, &ec);
_e_policy_client_del(pc);
}
static void
_e_policy_cb_hook_client_eval_post_new_client(void *d EINA_UNUSED, E_Client *ec)
{
+ E_Policy_Client *pc;
+ E_Zone *zone;
+
if (e_object_is_del(E_OBJECT(ec))) return;
if ((ec->new_client) && (!e_pixmap_usable_get(ec->pixmap))) return;
+ pc = eina_hash_find(hash_policy_clients, &ec);
+ EINA_SAFETY_ON_NULL_RETURN(pc);
+ zone = pc->zone;
+ EINA_SAFETY_ON_NULL_RETURN(zone);
+
if (e_policy_client_is_lockscreen(ec))
e_policy_stack_clients_restack_above_lockscreen(ec, EINA_TRUE);
}
static void
_e_policy_cb_hook_client_visibility(void *d EINA_UNUSED, E_Client *ec)
{
+ E_Policy_Client *pc;
+ E_Zone *zone;
int ex, ey, ew, eh;
int ax, ay, aw, ah;
+ pc = eina_hash_find(hash_policy_clients, &ec);
+ EINA_SAFETY_ON_NULL_RETURN(pc);
+ zone = pc->zone;
+ EINA_SAFETY_ON_NULL_RETURN(zone);
+
if (ec->visibility.changed)
{
if (ec->visibility.obscured == E_VISIBILITY_UNOBSCURED)
e_policy_wl_win_brightness_apply(ec);
_e_pol_changed_vis = EINA_TRUE;
- if (!eina_list_data_find(_e_pol_changed_zone, ec->zone))
- _e_pol_changed_zone = eina_list_append(_e_pol_changed_zone, ec->zone);
+ if (!eina_list_data_find(_e_pol_changed_zone, zone))
+ _e_pol_changed_zone = eina_list_append(_e_pol_changed_zone, zone);
}
else
{
{
e_client_geometry_get(ec, &ex, &ey, &ew, &eh);
// crop ec size with zone size
- E_RECTS_CLIP_TO_RECT(ex, ey, ew, eh, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h);
+ E_RECTS_CLIP_TO_RECT(ex, ey, ew, eh, zone->x, zone->y, zone->w, zone->h);
- if (!E_INTERSECTS(ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h, ex, ey, ew, eh))
+ if (!E_INTERSECTS(zone->x, zone->y, zone->w, zone->h, ex, ey, ew, eh))
{
if (ec->visibility.last_sent_type == E_VISIBILITY_PRE_UNOBSCURED)
{
E_CLIENT_FOREACH(ec)
{
- if (ec->zone != zone) continue;
-
pc = eina_hash_find(hash_policy_clients, &ec);
+ if (!pc) continue;
+ if (pc->zone != zone) continue;
+
if (pc && pc->max_policy_state)
{
_e_policy_client_maximize_policy_cancel(pc);
E_Policy_Softkey *softkey;
ev = event;
+ if (!ev) return ECORE_CALLBACK_PASS_ON;
if (e_config->use_softkey)
{
_e_policy_cb_zone_useful_geometry_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
E_Event_Zone_Useful_Geometry_Change *ev;
+ E_Policy_Client *pc;
E_Client *ec;
ev = event;
E_CLIENT_FOREACH(ec)
{
- if (ev->zone != ec->zone)
- continue;
+ pc = eina_hash_find(hash_policy_clients, &ec);
+ if (!pc) continue;
+ if (ev->zone != pc->zone) continue;
if (ec->maximized)
e_client_maximize_update(ec);
{
E_Event_Client *ev;
E_Client *ec;
+ E_Policy_Client *pc;
+ E_Zone *zone;
int zx, zy, zw, zh;
int ex, ey, ew, eh;
ec = ev->ec;
if (!ec) goto end;
+ pc = eina_hash_find(hash_policy_clients, &ec);
+ if (!pc) goto end;
+
+ zone = pc->zone;
+ if (!zone) goto end;
+
e_policy_wl_position_send(ec);
e_client_visibility_calculate();
if (e_policy_client_is_lockscreen(ec))
{
- zx = ec->zone->x;
- zy = ec->zone->y;
- zw = ec->zone->w;
- zh = ec->zone->h;
+ zx = zone->x;
+ zy = zone->y;
+ zw = zone->w;
+ zh = zone->h;
e_client_geometry_get(ec, &ex, &ey, &ew, &eh);
{
E_Event_Client *ev;
E_Client *ec;
+ E_Policy_Client *pc;
int zh = 0;
ev = (E_Event_Client *)event;
ec = ev->ec;
EINA_SAFETY_ON_NULL_RETURN_VAL(ec, ECORE_CALLBACK_PASS_ON);
+ pc = eina_hash_find(hash_policy_clients, &ec);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(pc, ECORE_CALLBACK_PASS_ON);
+
/* re-calculate window's position with changed size */
if (e_policy_client_is_volume_tv(ec))
{
- e_zone_useful_geometry_get(ec->zone, NULL, NULL, NULL, &zh);
+ e_zone_useful_geometry_get(pc->zone, NULL, NULL, NULL, &zh);
evas_object_move(ec->frame, 0, (zh / 2) - (ec->h / 2));
evas_object_pass_events_set(ec->frame, 1);
{
E_Event_Client *ev;
E_Client *ec;
+ E_Policy_Client *pc;
ev = event;
if (!ev) return ECORE_CALLBACK_PASS_ON;
ec = ev->ec;
- e_tzsh_indicator_srv_ower_win_update(ec->zone);
+ pc = eina_hash_find(hash_policy_clients, &ec);
+ if (!pc) return ECORE_CALLBACK_PASS_ON;
+
+ e_tzsh_indicator_srv_ower_win_update(pc->zone);
return ECORE_CALLBACK_PASS_ON;
}
E_Policy_Client *pc;
Eina_List *l;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(zone, NULL);
+
EINA_LIST_FOREACH(e_policy->launchers, l, pc)
{
- if (pc->ec->zone == zone)
+ if (pc->zone == zone)
return pc;
}
return NULL;
int angle;
int angle_id = 0;
int kbd_x, kbd_y, kbd_w, kbd_h;
+ E_Policy_Client *pc;
if (!e_policy_client_is_keyboard(ec) &&
!e_policy_client_is_keyboard_sub(ec))
kbd_w = ec->e.state.rot.geom[angle_id].w;
kbd_h = ec->e.state.rot.geom[angle_id].h;
+ pc = eina_hash_find(hash_policy_clients, &ec);
+ if (!pc->ec) return;
+ if (!pc->zone) return;
+
switch (angle)
{
case 0:
- kbd_x = ec->zone->w - kbd_w;
- kbd_y = ec->zone->h - kbd_h;
+ kbd_x = pc->zone->w - kbd_w;
+ kbd_y = pc->zone->h - kbd_h;
break;
case 90:
- kbd_x = ec->zone->w - kbd_w;
- kbd_y = ec->zone->h - kbd_h;
+ kbd_x = pc->zone->w - kbd_w;
+ kbd_y = pc->zone->h - kbd_h;
break;
case 180:
break;
default:
- kbd_x = ec->zone->w - kbd_w;
- kbd_y = ec->zone->h - kbd_h;
+ kbd_x = pc->zone->w - kbd_w;
+ kbd_y = pc->zone->h - kbd_h;
break;
}