From 26cbbe67234d616bea5c0b926a5e140cc012c4d1 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 13 Mar 2014 12:11:06 -0400 Subject: [PATCH] improve client positioning resistance accuracy for hidden clients and fake shelves --- src/bin/e_resist.c | 36 ++++++++---------------------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/src/bin/e_resist.c b/src/bin/e_resist.c index 7bae21654..677f049ba 100644 --- a/src/bin/e_resist.c +++ b/src/bin/e_resist.c @@ -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. */ 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)); - EINA_LIST_FOREACH(e_shelf_list(), l, es) + l = e_shelf_list_all(); + EINA_LIST_FREE(l, es) { - Eina_List *ll2; - E_Config_Shelf_Desk *sd; - - if (es->zone->comp == c) + if (e_shelf_desk_visible(es, desk)) { - if (es->cfg->desk_show_mode) - { - 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); - } + OBSTACLE(es->x + es->zone->x, es->y + es->zone->y, es->w, es->h, + e_config->gadget_resist); } } if (rects)