Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src Modified Files: ewl_box.c ewl_object.h ewl_widget.c Log Message: Fixed a sizing bug in the box code. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_box.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -3 -r1.41 -r1.42 --- ewl_box.c 14 Jan 2003 21:44:58 -0000 1.41 +++ ewl_box.c 29 Jan 2003 16:56:53 -0000 1.42 @@ -46,20 +46,20 @@ */ static Ewd_List *spread = NULL; -void __ewl_box_setup(); -void __ewl_box_add(Ewl_Container * c, Ewl_Widget * w); -void __ewl_box_child_resize(Ewl_Container * c, Ewl_Widget * w, +static void __ewl_box_setup(); +static void __ewl_box_add(Ewl_Container * c, Ewl_Widget * w); +static void __ewl_box_child_resize(Ewl_Container * c, Ewl_Widget * w, int size, Ewl_Orientation o); -void __ewl_box_configure(Ewl_Widget * w, void *ev_data, +static void __ewl_box_configure(Ewl_Widget * w, void *ev_data, void *user_data); -void __ewl_box_configure_calc(Ewl_Box * b, int *fill_size, +static void __ewl_box_configure_calc(Ewl_Box * b, int *fill_size, int *align_size); -void __ewl_box_configure_fill(Ewl_Box * b, int *fill_size, +static void __ewl_box_configure_fill(Ewl_Box * b, int *fill_size, int *align_size); -void __ewl_box_configure_layout(Ewl_Box * b, int *x, int *y, +static void __ewl_box_configure_layout(Ewl_Box * b, int *x, int *y, int *fill, int *align, int *align_size); -void __ewl_box_configure_child(Ewl_Box * b, Ewl_Object * c, int *x, +static void __ewl_box_configure_child(Ewl_Box * b, Ewl_Object * c, int *x, int *y, int *align, int *align_size); /** @@ -185,16 +185,19 @@ w = EWL_WIDGET(b); - nodes = ewd_list_nodes(EWL_CONTAINER(b)->children) - 1; + nodes = ewd_list_nodes(EWL_CONTAINER(b)->children); - if (b->orientation == EWL_ORIENTATION_HORIZONTAL) - ewl_object_set_preferred_w(EWL_OBJECT(w), - PREFERRED_W(w) - (nodes * b->spacing) + - (nodes * s)); - else - ewl_object_set_preferred_h(EWL_OBJECT(w), - PREFERRED_H(w) - (nodes * b->spacing) + - (nodes * s)); + if (nodes) { + nodes--; + if (b->orientation == EWL_ORIENTATION_HORIZONTAL) + ewl_object_set_preferred_w(EWL_OBJECT(w), + PREFERRED_W(w) - (nodes * b->spacing) + + (nodes * s)); + else + ewl_object_set_preferred_h(EWL_OBJECT(w), + PREFERRED_H(w) - (nodes * b->spacing) + + (nodes * s)); + } b->spacing = s; @@ -203,7 +206,8 @@ DLEAVE_FUNCTION(DLEVEL_STABLE); } -void __ewl_box_configure(Ewl_Widget * w, void *ev_data, void *user_data) +static void +__ewl_box_configure(Ewl_Widget * w, void *ev_data, void *user_data) { Ewl_Box *b; @@ -226,7 +230,7 @@ * Get the starting values for the dimensions of the box. */ x = CURRENT_X(w); - y = CURRENT_Y(EWL_OBJECT(w)); + y = CURRENT_Y(w); width = CURRENT_W(w); height = CURRENT_H(w); @@ -264,11 +268,6 @@ __ewl_box_configure_fill(b, fill_size, align_size); /* - * Center items to be laid out as best as possible. - */ - /* *fill += *fill_size / 2; */ - - /* * Layout the children in their appropriate positions. */ __ewl_box_configure_layout(b, &x, &y, fill, align, align_size); @@ -279,7 +278,8 @@ /* * Split the children into three lists for layout. */ -void __ewl_box_configure_calc(Ewl_Box * b, int *fill_size, int *align_size) +static void +__ewl_box_configure_calc(Ewl_Box * b, int *fill_size, int *align_size) { Ewl_Object *child; @@ -333,7 +333,8 @@ * Spread space to any widgets that have fill policy set to fill. This should * not be called if @num_fill or *@fill_size are equal to zero. */ -void __ewl_box_configure_fill(Ewl_Box * b, int *fill_size, int *align_size) +static void +__ewl_box_configure_fill(Ewl_Box * b, int *fill_size, int *align_size) { int space; int temp, remainder; @@ -442,7 +443,7 @@ DLEAVE_FUNCTION(DLEVEL_STABLE); } -void +static void __ewl_box_configure_layout(Ewl_Box * b, int *x, int *y, int *fill, int *align, int *align_size) { @@ -476,7 +477,7 @@ DLEAVE_FUNCTION(DLEVEL_STABLE); } -void +static void __ewl_box_configure_child(Ewl_Box * b, Ewl_Object * c, int *x, int *y, int *align, int *align_size) { @@ -516,11 +517,11 @@ /* * When a child gets added to the box update it's size. */ -void __ewl_box_add(Ewl_Container * c, Ewl_Widget * w) +static void +__ewl_box_add(Ewl_Container * c, Ewl_Widget * w) { - int osize; int max_size = 0; - int temp; + int osize, temp; Box_Orientation *info; DCHECK_PARAM_PTR("c", c); @@ -559,6 +560,8 @@ info->pref_align_set(EWL_OBJECT(c), temp); } + temp = info->pref_fill_ask(EWL_OBJECT(w)); + /* * Add the size of the new child, and add in the spacing if there's * any other widgets in the box. @@ -572,7 +575,7 @@ * Determine the preferred size of the box when a child changes it's preferred * size. */ -void +static void __ewl_box_child_resize(Ewl_Container * c, Ewl_Widget * w, int size, Ewl_Orientation o) { @@ -643,24 +646,19 @@ info->pref_align_set(EWL_OBJECT(c), max_size); } - /* - printf("Box %p resized to %d x %d\n", c, - ewl_object_get_preferred_w(EWL_OBJECT(c)), - ewl_object_get_preferred_h(EWL_OBJECT(c))); - */ - max_size = 0; ewd_list_goto_first(c->children); while ((child = ewd_list_next(c->children))) - max_size += ewl_object_get_preferred_h(child); - printf("\tChildren heights add to %d\n", max_size); + max_size += ewl_object_get_preferred_h(child) + EWL_BOX(c)->spacing; + max_size -= EWL_BOX(c)->spacing; } /* * Setup some internal variables for effectively laying out the children based * on orientation. */ -void __ewl_box_setup() +static void +__ewl_box_setup() { if (!vertical) { vertical = NEW(Box_Orientation, 1); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_object.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- ewl_object.h 14 Jan 2003 21:45:03 -0000 1.26 +++ ewl_object.h 29 Jan 2003 16:56:54 -0000 1.27 @@ -11,11 +11,11 @@ struct _ewl_object { struct { int x, y; - int w, h; + unsigned int w, h; } current; struct { - int w, h; + unsigned int w, h; } preferred, maximum, minimum; /* =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_widget.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -3 -r1.43 -r1.44 --- ewl_widget.c 14 Jan 2003 21:45:06 -0000 1.43 +++ ewl_widget.c 29 Jan 2003 16:56:54 -0000 1.44 @@ -551,8 +551,6 @@ */ void __ewl_widget_show(Ewl_Widget * w, void *ev_data, void *user_data) { - Ewl_Window *win; - DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR("w", w); @@ -567,8 +565,6 @@ */ void __ewl_widget_hide(Ewl_Widget * w, void *ev_data, void *user_data) { - Ewl_Window *win; - DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR("w", w); ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs