Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_utils.c e_utils.h 


Log Message:
Utility functions to find the border above and below the current on a desk.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_utils.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- e_utils.c   31 Aug 2005 04:49:05 -0000      1.25
+++ e_utils.c   21 Sep 2005 18:02:04 -0000      1.26
@@ -396,3 +396,87 @@
      }
    return NULL;
 }
+
+E_Border *
+e_util_desk_border_above(E_Border *bd)
+{
+   E_Border *above = NULL;
+   Evas_List *l;
+   int pos, i;
+
+   if (bd->layer == 0) pos = 0;
+   else if ((bd->layer > 0) && (bd->layer <= 50)) pos = 1;
+   else if ((bd->layer > 50) && (bd->layer <= 100)) pos = 2;
+   else if ((bd->layer > 100) && (bd->layer <= 150)) pos = 3;
+   else if ((bd->layer > 150) && (bd->layer <= 200)) pos = 4;
+   else pos = 5;
+
+   for (l = evas_list_find_list(bd->zone->container->layers[pos].clients, bd);
+       (l) && (l->next) && (!above);
+       l = l->next)
+     {
+       above = l->next->data;
+       if ((above->desk != bd->desk) && (!above->sticky))
+         above = NULL;
+     }
+   if (!above)
+     {
+       /* Need to check the layers above */
+       for (i = pos + 1; (i < 7) && (!above); i++)
+         {
+            for (l = bd->zone->container->layers[i].clients;
+                 (l) && (!above);
+                 l = l->next)
+              {
+                 above = l->data;
+                 if ((above->desk != bd->desk) && (!above->sticky))
+                   above = NULL;
+              }
+         }
+     }
+   return above;
+}
+
+E_Border *
+e_util_desk_border_below(E_Border *bd)
+{
+   E_Border *below = NULL;
+   Evas_List *l;
+   int pos, i;
+
+   if (bd->layer == 0) pos = 0;
+   else if ((bd->layer > 0) && (bd->layer <= 50)) pos = 1;
+   else if ((bd->layer > 50) && (bd->layer <= 100)) pos = 2;
+   else if ((bd->layer > 100) && (bd->layer <= 150)) pos = 3;
+   else if ((bd->layer > 150) && (bd->layer <= 200)) pos = 4;
+   else pos = 5;
+
+   for (l = evas_list_find_list(bd->zone->container->layers[pos].clients, bd);
+       (l) && (l->prev) && (!below);
+       l = l->prev)
+     {
+       below = l->prev->data;
+       if ((below->desk != bd->desk) && (!below->sticky))
+         below = NULL;
+     }
+   if (!below)
+     {
+       /* Need to check the layers below */
+       for (i = pos - 1; (i >= 0) && (!below); i--)
+         {
+            if (bd->zone->container->layers[i].clients)
+              {
+                 for (l = 
evas_list_last(bd->zone->container->layers[i].clients);
+                      (l) && (!below);
+                      l = l->prev)
+                   {
+                      below = l->data;
+                      if ((below->desk != bd->desk) && (!below->sticky))
+                        below = NULL;
+                   }
+              }
+         }
+     }
+
+   return below;
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_utils.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- e_utils.h   31 Aug 2005 04:49:05 -0000      1.17
+++ e_utils.h   21 Sep 2005 18:02:04 -0000      1.18
@@ -25,6 +25,8 @@
 EAPI int          e_util_edje_icon_set(Evas_Object *obj, char *name);
 EAPI int          e_util_menu_item_edje_icon_set(E_Menu_Item *mi, char *name);
 EAPI E_Container *e_util_container_window_find(Ecore_X_Window win);
+EAPI E_Border    *e_util_desk_border_above(E_Border *bd);
+EAPI E_Border    *e_util_desk_border_below(E_Border *bd);
     
 #endif
 #endif




-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to