Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: Makefile.am e_box.c e_includes.h Added Files: e_table.c e_table.h Log Message: table smart that handles ONLY homogenous layout with table cells ONLY spanning 1 column or row... but hey - enough for the pager work... :) also fixed up e_box to properly clip and show/hide children etc. also optimised e_box to not re-configure on simple moves also remvoe typo from pager .edc =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- Makefile.am 7 Mar 2005 12:06:41 -0000 1.15 +++ Makefile.am 13 Mar 2005 04:01:00 -0000 1.16 @@ -41,7 +41,8 @@ e_hints.h \ e_gadman.h \ e_signals.h \ -e_xinerama.h +e_xinerama.h \ +e_table.h enlightenment_SOURCES = \ @@ -77,6 +78,7 @@ e_gadman.c \ e_signals.c \ e_xinerama.c \ +e_table.c \ $(ENLIGHTENMENTHEADERS) enlightenment_LDFLAGS = -export-dynamic @e_libs@ @dlopen_libs@ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_box.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_box.c 16 Feb 2005 11:21:07 -0000 1.4 +++ e_box.c 13 Mar 2005 04:01:00 -0000 1.5 @@ -10,6 +10,7 @@ { Evas_Coord x, y, w, h; Evas_Object *obj; + Evas_Object *clip; int frozen; unsigned char changed : 1; unsigned char horizontal : 1; @@ -330,12 +331,14 @@ bi->min.h = 0; bi->max.w = 0; bi->max.h = 0; - evas_object_clip_set(obj, evas_object_clip_get(sd->obj)); + evas_object_clip_set(obj, sd->clip); evas_object_stack_above(obj, sd->obj); evas_object_smart_member_add(bi->sd->obj, obj); evas_object_data_set(obj, "e_box_data", bi); evas_object_event_callback_add(obj, EVAS_CALLBACK_FREE, _e_box_smart_item_del_hook, NULL); + if (!evas_object_visible_get(sd->clip)) + evas_object_show(sd->clip); return bi; } @@ -346,10 +349,16 @@ bi = evas_object_data_get(obj, "e_box_data"); if (!bi) return; + if (!bi->sd->items) + { + if (evas_object_visible_get(bi->sd->clip)) + evas_object_hide(bi->sd->clip); + } evas_object_event_callback_del(obj, EVAS_CALLBACK_FREE, _e_box_smart_item_del_hook); evas_object_smart_member_del(bi->sd->obj); + evas_object_clip_unset(obj); evas_object_data_del(obj, "e_box_data"); free(bi); } @@ -512,13 +521,13 @@ sd->changed = 0; } -/* FIXME: need to have min/max size calc routines */ static void _e_box_smart_extents_calcuate(E_Smart_Data *sd) { Evas_List *l; int minw, minh; - + + /* FIXME: need to calc max */ sd->max.w = -1; /* max < 0 == unlimited */ sd->max.h = -1; @@ -612,6 +621,11 @@ sd->y = 0; sd->w = 0; sd->h = 0; + sd->clip = evas_object_rectangle_add(evas_object_evas_get(obj)); + evas_object_smart_member_add(obj, sd->clip); + evas_object_move(sd->clip, -100000, -100000); + evas_object_resize(sd->clip, 200000, 200000); + evas_object_color_set(sd->clip, 255, 255, 255, 255); evas_object_smart_data_set(obj, sd); } @@ -629,6 +643,7 @@ child = sd->items->data; e_box_unpack(child); } + evas_object_del(sd->clip); free(sd); } @@ -730,10 +745,22 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; if ((x == sd->x) && (y == sd->y)) return; + { + Evas_List *l; + Evas_Coord dx, dy; + + dx = x - sd->x; + dy = y - sd->y; + for (l = sd->items; l; l = l->next) + { + Evas_Coord ox, oy; + + evas_object_geometry_get(l->data, &ox, &oy, NULL, NULL); + evas_object_move(l->data, ox + dx, oy + dy); + } + } sd->x = x; sd->y = y; - sd->changed = 1; - _e_box_smart_reconfigure(sd); } static void @@ -757,6 +784,7 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; + if (sd->items) evas_object_show(sd->clip); } static void @@ -766,6 +794,7 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; + evas_object_hide(sd->clip); } static void @@ -775,6 +804,7 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; + evas_object_color_set(sd->clip, r, g, b, a); } static void @@ -784,15 +814,7 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; - - { - Evas_List *l; - - for (l = sd->items; l; l = l->next) - { - evas_object_clip_set(l->data, clip); - } - } + evas_object_clip_set(sd->clip, clip); } static void @@ -802,13 +824,5 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; - - { - Evas_List *l; - - for (l = sd->items; l; l = l->next) - { - evas_object_clip_unset(l->data); - } - } + evas_object_clip_unset(sd->clip); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_includes.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_includes.h 7 Mar 2005 12:06:41 -0000 1.6 +++ e_includes.h 13 Mar 2005 04:01:00 -0000 1.7 @@ -32,3 +32,4 @@ #include "e_gadman.h" #include "e_signals.h" #include "e_xinerama.h" +#include "e_table.h" ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs