Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_gadman.c Log Message: mini-freeze TODO items fixed :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadman.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- e_gadman.c 24 Jan 2005 15:22:47 -0000 1.19 +++ e_gadman.c 27 Jan 2005 15:17:09 -0000 1.20 @@ -650,8 +650,132 @@ ox = gmc->x; oy = gmc->y; ok = 0; + if ((gmc->policy & 0xff) == E_GADMAN_POLICY_EDGES) + { + if ((gmc->edge == E_GADMAN_EDGE_LEFT) || + (gmc->edge == E_GADMAN_EDGE_RIGHT)) + { + for (l = gmc->zone->container->gadman->clients; l; l = l->next) + { + E_Gadman_Client *gmc2; + + gmc2 = l->data; + if (gmc != gmc2) + { + if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) && + (E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h))) + { + ok = 0; + gmc->y = gmc2->y + gmc2->h; + } + } + } + if (ok) return; + if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h)) + gmc->y = gmc->zone->y + gmc->zone->h - gmc->h; + ok = 1; + for (l = gmc->zone->container->gadman->clients; l; l = l->next) + { + E_Gadman_Client *gmc2; + + gmc2 = l->data; + if (gmc != gmc2) + { + if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) && + (E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h))) + { + ok = 0; + break; + } + } + } + if (ok) + { + _e_gadman_client_geometry_to_align(gmc); + return; + } + for (l = gmc->zone->container->gadman->clients; l; l = l->next) + { + E_Gadman_Client *gmc2; + + if (gmc != gmc2) + { + gmc2 = l->data; + if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) && + (E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h))) + { + gmc->y = gmc2->y - gmc->h; + } + } + } + if (gmc->y < gmc->zone->y) + gmc->y = gmc->zone->y; + } + else if ((gmc->edge == E_GADMAN_EDGE_TOP) || + (gmc->edge == E_GADMAN_EDGE_BOTTOM)) + { + for (l = gmc->zone->container->gadman->clients; l; l = l->next) + { + E_Gadman_Client *gmc2; + + gmc2 = l->data; + if (gmc != gmc2) + { + if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) && + (E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h))) + { + ok = 0; + gmc->x = gmc2->x + gmc2->w; + } + } + } + if (ok) return; + if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w)) + gmc->x = gmc->zone->x + gmc->zone->w - gmc->w; + ok = 1; + for (l = gmc->zone->container->gadman->clients; l; l = l->next) + { + E_Gadman_Client *gmc2; + + gmc2 = l->data; + if (gmc != gmc2) + { + if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) && + (E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h))) + { + ok = 0; + break; + } + } + } + if (ok) + { + _e_gadman_client_geometry_to_align(gmc); + return; + } + for (l = gmc->zone->container->gadman->clients; l; l = l->next) + { + E_Gadman_Client *gmc2; + + if (gmc != gmc2) + { + gmc2 = l->data; + if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) && + (E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h))) + { + gmc->x = gmc2->x - gmc->w; + } + } + } + if (gmc->x < gmc->zone->x) + gmc->x = gmc->zone->x; + } + _e_gadman_client_geometry_to_align(gmc); + return; + } while ((!ok) && (iterate < 1000)) { + ok = 1; for (l = gmc->zone->container->gadman->clients; l; l = l->next) { E_Gadman_Client *gmc2; @@ -662,10 +786,12 @@ if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) && (E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h))) { + ok = 0; gmc->x = gmc2->x + gmc2->w; } } } + if (ok) break; if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w)) gmc->x = gmc->zone->x + gmc->zone->w - gmc->w; ok = 1; ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs