improve client positioning resistance accuracy for hidden clients and fake shelves

This commit is contained in:
Mike Blumenkrantz 2014-03-13 12:11:06 -04:00
parent fe5f8df001
commit 26cbbe6723
1 changed files with 8 additions and 28 deletions

View File

@ -58,41 +58,21 @@ e_resist_client_position(E_Comp *c, Eina_List *skiplist,
/* here if need be - ie xinerama middle between screens and panels etc. */ /* here if need be - ie xinerama middle between screens and panels etc. */
E_CLIENT_FOREACH(c, ec) E_CLIENT_FOREACH(c, ec)
{ {
if (ec->visible && (!e_client_util_ignored_get(ec))) if (e_client_util_ignored_get(ec) || evas_object_visible_get(ec->frame)) continue;
if (ec->offer_resistance && (!eina_list_data_find(skiplist, ec)))
{ {
if (ec->offer_resistance && (!eina_list_data_find(skiplist, ec))) OBSTACLE(ec->x, ec->y, ec->w, ec->h, e_config->window_resist);
{
OBSTACLE(ec->x, ec->y, ec->w, ec->h, e_config->window_resist);
}
} }
} }
desk = e_desk_current_get(e_zone_current_get(c)); desk = e_desk_current_get(e_zone_current_get(c));
EINA_LIST_FOREACH(e_shelf_list(), l, es) l = e_shelf_list_all();
EINA_LIST_FREE(l, es)
{ {
Eina_List *ll2; if (e_shelf_desk_visible(es, desk))
E_Config_Shelf_Desk *sd;
if (es->zone->comp == c)
{ {
if (es->cfg->desk_show_mode) OBSTACLE(es->x + es->zone->x, es->y + es->zone->y, es->w, es->h,
{ e_config->gadget_resist);
EINA_LIST_FOREACH(es->cfg->desk_list, ll2, sd)
{
if (!sd) continue;
if ((sd->x == desk->x) && (sd->y == desk->y))
{
OBSTACLE(es->x + es->zone->x, es->y + es->zone->y, es->w, es->h,
e_config->gadget_resist);
break;
}
}
}
else
{
OBSTACLE(es->x + es->zone->x, es->y + es->zone->y, es->w, es->h,
e_config->gadget_resist);
}
} }
} }
if (rects) if (rects)