diff options
author | Carsten Haitzler <raster@rasterman.com> | 2005-01-11 13:11:12 +0000 |
---|---|---|
committer | Carsten Haitzler <raster@rasterman.com> | 2005-01-11 13:11:12 +0000 |
commit | 899d272ed5584e14ea42b3e3dc50419ab8dee8d1 (patch) | |
tree | c01a75676ab53caf35b870a09e68b8f067087fb2 /src/bin/e_place.c | |
parent | 960fcb4bc42c0c601590254c34a278ca31aa8328 (diff) | |
download | enlightenment-899d272ed5584e14ea42b3e3dc50419ab8dee8d1.tar.gz |
respect zones for resistance, window placement...
SVN revision: 12898
Diffstat (limited to 'src/bin/e_place.c')
-rw-r--r-- | src/bin/e_place.c | 81 |
1 files changed, 43 insertions, 38 deletions
diff --git a/src/bin/e_place.c b/src/bin/e_place.c index f254a38e0a..54d21bf3fd 100644 --- a/src/bin/e_place.c +++ b/src/bin/e_place.c @@ -1,7 +1,7 @@ #include "e.h" int -e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int y, int w, int h, int *rx, int *ry) +e_place_zone_region_smart(E_Zone *zone, Evas_List *skiplist, int x, int y, int w, int h, int *rx, int *ry) { int a_w = 0, a_h = 0; int *a_x = NULL, *a_y = NULL; @@ -12,12 +12,15 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int a_x = E_NEW(int, 2); a_y = E_NEW(int, 2); + x -= zone->x; + y -= zone->y; + a_x[0] = 0; - a_x[1] = con->w; + a_x[1] = zone->w; a_y[0] = 0; - a_y[1] = con->h; + a_y[1] = zone->h; - for (l = con->clients; l; l = l->next) + for (l = zone->container->clients; l; l = l->next) { E_Border *bd; int ok; @@ -34,8 +37,8 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int } if ((ok) && (bd->visible)) { - if (E_INTERSECTS(bd->x, bd->y, bd->w, bd->h, - 0, 0, con->w, con->h)) + if (E_INTERSECTS((bd->x - zone->x), (bd->y - zone->y), + bd->w, bd->h, 0, 0, zone->w, zone->h)) { int i, j; @@ -43,18 +46,18 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int { int ok = 1; - if (bd->x > 0) + if ((bd->x - zone->x) > 0) { - if (a_x[i] == bd->x) + if (a_x[i] == (bd->x - zone->x)) ok = 0; - else if (a_x[i] > bd->x) + else if (a_x[i] > (bd->x - zone->x)) { a_w++; E_REALLOC(a_x, int, a_w); for (j = a_w - 1; j > i; j--) a_x[j] = a_x[j - 1]; - a_x[i] = bd->x; + a_x[i] = (bd->x - zone->x); ok = 0; } } @@ -65,18 +68,18 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int { int ok = 1; - if (bd->x + bd->w < con->w) + if ((bd->x - zone->x) + bd->w < zone->w) { - if (a_x[i] == bd->x + bd->w) + if (a_x[i] == (bd->x - zone->x) + bd->w) ok = 0; - else if (a_x[i] > bd->x + bd->w) + else if (a_x[i] > (bd->x - zone->x) + bd->w) { a_w++; E_REALLOC(a_x, int, a_w); for (j = a_w - 1; j > i; j--) a_x[j] = a_x[j - 1]; - a_x[i] = bd->x + bd->w; + a_x[i] = (bd->x - zone->x) + bd->w; ok = 0; } } @@ -87,18 +90,18 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int { int ok = 1; - if (bd->y > 0) + if ((bd->y - zone->y) > 0) { - if (a_y[i] == bd->y) + if (a_y[i] == (bd->y - zone->y)) ok = 0; - else if (a_y[i] > bd->y) + else if (a_y[i] > (bd->y - zone->y)) { a_h++; E_REALLOC(a_y, int, a_h); for (j = a_h - 1; j > i; j--) a_y[j] = a_y[j - 1]; - a_y[i] = bd->y; + a_y[i] = (bd->y - zone->y); ok = 0; } } @@ -109,18 +112,18 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int { int ok = 1; - if (bd->y + bd->h < con->h) + if ((bd->y - zone->y) + bd->h < zone->h) { - if (a_y[i] == bd->y + bd->h) + if (a_y[i] == (bd->y - zone->y) + bd->h) ok = 0; - else if (a_y[i] > bd->y + bd->h) + else if (a_y[i] > (bd->y - zone->y) + bd->h) { a_h++; E_REALLOC(a_y, int, a_h); for (j = a_h - 1; j > i; j--) a_y[j] = a_y[j - 1]; - a_y[i] = bd->y + bd->h; + a_y[i] = (bd->y - zone->y) + bd->h; ok = 0; } } @@ -138,12 +141,12 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int { for (i = 0; i < a_w - 1; i++) { - if ((a_x[i] < (con->w - w)) && - (a_y[j] < (con->h - h))) + if ((a_x[i] < (zone->w - w)) && + (a_y[j] < (zone->h - h))) { int ar = 0; - for (l = con->clients; l; l = l->next) + for (l = zone->container->clients; l; l = l->next) { E_Border *bd; int x1, y1, w1, h1, x2, y2, w2, h2; @@ -155,8 +158,8 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int y1 = a_y[j]; w1 = w; h1 = h; - x2 = bd->x; - y2 = bd->y; + x2 = (bd->x - zone->x); + y2 = (bd->y - zone->y); w2 = bd->w; h2 = bd->h; for (ll = skiplist; ll; ll = ll->next) @@ -201,11 +204,11 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int goto done; } } - if ((a_x[i + 1] - w > 0) && (a_y[j] < (con->h - h))) + if ((a_x[i + 1] - w > 0) && (a_y[j] < (zone->h - h))) { int ar = 0; - for (l = con->clients; l; l = l->next) + for (l = zone->container->clients; l; l = l->next) { E_Border *bd; int x1, y1, w1, h1, x2, y2, w2, h2; @@ -217,8 +220,8 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int y1 = a_y[j]; w1 = w; h1 = h; - x2 = bd->x; - y2 = bd->y; + x2 = (bd->x - zone->x); + y2 = (bd->y - zone->y); w2 = bd->w; h2 = bd->h; for (ll = skiplist; ll; ll = ll->next) @@ -267,7 +270,7 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int { int ar = 0; - for (l = con->clients; l; l = l->next) + for (l = zone->container->clients; l; l = l->next) { E_Border *bd; int x1, y1, w1, h1, x2, y2, w2, h2; @@ -279,8 +282,8 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int y1 = a_y[j + 1] - h; w1 = w; h1 = h; - x2 = bd->x; - y2 = bd->y; + x2 = (bd->x - zone->x); + y2 = (bd->y - zone->y); w2 = bd->w; h2 = bd->h; for (ll = skiplist; ll; ll = ll->next) @@ -325,11 +328,11 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int goto done; } } - if ((a_x[i] < (con->w - w)) && (a_y[j + 1] - h > 0)) + if ((a_x[i] < (zone->w - w)) && (a_y[j + 1] - h > 0)) { int ar = 0; - for (l = con->clients; l; l = l->next) + for (l = zone->container->clients; l; l = l->next) { E_Border *bd; int x1, y1, w1, h1, x2, y2, w2, h2; @@ -341,8 +344,8 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int y1 = a_y[j + 1] - h; w1 = w; h1 = h; - x2 = bd->x; - y2 = bd->y; + x2 = (bd->x - zone->x); + y2 = (bd->y - zone->y); w2 = bd->w; h2 = bd->h; for (ll = skiplist; ll; ll = ll->next) @@ -393,5 +396,7 @@ e_place_container_region_smart(E_Container *con, Evas_List *skiplist, int x, int done: E_FREE(a_x); E_FREE(a_y); + *rx += zone->x; + *ry += zone->y; return 1; } |