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

Reply via email to