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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs