Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src


Modified Files:
        ewl_box.c ewl_cell.c ewl_container.c ewl_container.h 
        ewl_entry.c ewl_enums.h ewl_events.c ewl_floater.c ewl_grid.c 
        ewl_notebook.c ewl_object.c ewl_object.h ewl_row.c ewl_row.h 
        ewl_scrollpane.c ewl_seeker.c ewl_selectionbar.c 
        ewl_selectionbook.c ewl_spinner.c ewl_table.c ewl_text.c 
        ewl_tree.c ewl_window.c 


Log Message:
Add remove notifiers to containers.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_box.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -3 -r1.43 -r1.44
--- ewl_box.c   13 Feb 2003 06:54:17 -0000      1.43
+++ ewl_box.c   19 Feb 2003 02:18:05 -0000      1.44
@@ -115,10 +115,10 @@
         */
        if (o == EWL_ORIENTATION_HORIZONTAL)
                ewl_container_init(EWL_CONTAINER(b), "hbox", __ewl_box_add,
-                               __ewl_box_child_resize);
+                               __ewl_box_child_resize, NULL);
        else
                ewl_container_init(EWL_CONTAINER(b), "vbox", __ewl_box_add,
-                               __ewl_box_child_resize);
+                               __ewl_box_child_resize, NULL);
 
        ewl_callback_prepend(w, EWL_CALLBACK_CONFIGURE, __ewl_box_configure,
                             NULL);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_cell.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_cell.c  4 Feb 2003 03:43:40 -0000       1.4
+++ ewl_cell.c  19 Feb 2003 02:18:05 -0000      1.5
@@ -45,7 +45,7 @@
        DCHECK_PARAM_PTR_RET("cell", cell, FALSE);
 
        ewl_container_init(EWL_CONTAINER(cell), "cell", __ewl_cell_add,
-                       __ewl_cell_child_resize);
+                       __ewl_cell_child_resize, NULL);
 
        ewl_callback_append(EWL_WIDGET(cell), EWL_CALLBACK_CONFIGURE,
                        __ewl_cell_configure, NULL);
@@ -70,7 +70,6 @@
        if (child)
                ewl_object_request_geometry(child, CURRENT_X(w), CURRENT_Y(w),
                                CURRENT_W(w), CURRENT_H(w));
-       ewl_widget_configure(EWL_WIDGET(child));
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_container.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- ewl_container.c     2 Feb 2003 21:03:23 -0000       1.27
+++ ewl_container.c     19 Feb 2003 02:18:05 -0000      1.28
@@ -26,7 +26,7 @@
  */
 void
 ewl_container_init(Ewl_Container * c, char *appearance, Ewl_Child_Add add,
-                  Ewl_Child_Resize rs)
+                  Ewl_Child_Remove remove, Ewl_Child_Resize rs)
 {
        Ewl_Widget     *w;
 
@@ -46,6 +46,7 @@
         */
        c->children = ewd_list_new();
        c->child_add = add;
+       c->child_remove = remove;
        c->child_resize = rs;
 
        /*
@@ -71,13 +72,34 @@
  *
  * Returns no value. Changes the add nofitier function of @container to @add.
  */
-void ewl_container_add_notify(Ewl_Container * container, Ewl_Child_Add add)
+void
+ewl_container_add_notify(Ewl_Container * container, Ewl_Child_Add add)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
 
        DCHECK_PARAM_PTR("container", container);
 
        container->child_add = add;
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
+ * ewl_container_remove_notify - set the function to be called when removing children
+ * @container: the container to change the add notifier
+ * @remove: the new remove notifier for the container
+ *
+ * Returns no value. Changes the remove notifier function of @container to
+ * @remove.
+ */
+void
+ewl_container_remove_notify(Ewl_Container * container, Ewl_Child_Remove remove)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       DCHECK_PARAM_PTR("container", container);
+
+       container->child_remove = remove;
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_container.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- ewl_container.h     14 Jan 2003 21:45:00 -0000      1.15
+++ ewl_container.h     19 Feb 2003 02:18:05 -0000      1.16
@@ -14,6 +14,7 @@
 #define EWL_CONTAINER(widget) ((Ewl_Container *) widget)
 
 typedef void    (*Ewl_Child_Add) (Ewl_Container * c, Ewl_Widget * w);
+typedef void    (*Ewl_Child_Remove) (Ewl_Container * c, Ewl_Widget * w);
 typedef void    (*Ewl_Child_Resize) (Ewl_Container * c, Ewl_Widget * w,
                                     int size, Ewl_Orientation o);
 
@@ -42,6 +43,12 @@
        Ewl_Child_Add   child_add;
 
        /*
+        * Removal function updates the preferred size of the container when
+        * a child is removed.
+        */
+       Ewl_Child_Add   child_remove;
+
+       /*
         * Changes the preferred size of the container when the preferred size
         * of the child changes.
         */
@@ -49,8 +56,11 @@
 };
 
 void            ewl_container_init(Ewl_Container * widget, char *appearance,
-                                  Ewl_Child_Add add, Ewl_Child_Resize rs);
+                                  Ewl_Child_Add add, Ewl_Child_Remove remove,
+                                  Ewl_Child_Resize rs);
 void            ewl_container_add_notify(Ewl_Container * container,
+                                        Ewl_Child_Add add);
+void            ewl_container_remove_notify(Ewl_Container * container,
                                         Ewl_Child_Add add);
 void            ewl_container_resize_notify(Ewl_Container * container,
                                            Ewl_Child_Resize resize);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_entry.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- ewl_entry.c 14 Jan 2003 21:45:00 -0000      1.41
+++ ewl_entry.c 19 Feb 2003 02:18:05 -0000      1.42
@@ -114,11 +114,10 @@
 
        w = EWL_WIDGET(e);
 
-       ewl_container_init(EWL_CONTAINER(w), "/entry",
-                          NULL, __ewl_entry_child_resize);
-       ewl_object_set_fill_policy(EWL_OBJECT(w), EWL_FILL_POLICY_FILL);
-       ewl_object_set_minimum_size(EWL_OBJECT(w), 20, 20);
-       ewl_object_set_maximum_size(EWL_OBJECT(w), 1 << 30, 20);
+       ewl_container_init(EWL_CONTAINER(w), "entry", NULL,
+                       __ewl_entry_child_resize, NULL);
+       ewl_object_set_fill_policy(EWL_OBJECT(w), EWL_FILL_POLICY_HSHRINK |
+                       EWL_FILL_POLICY_HFILL);
 
        w->recursive = FALSE;
 
@@ -186,7 +185,6 @@
        yy = CURRENT_Y(w);
 
        ewl_object_request_position(EWL_OBJECT(e->text), xx, yy);
-       ewl_widget_configure(e->text);
 
        /******************************************************************/
 
@@ -209,7 +207,6 @@
        }
 
        ewl_object_request_geometry(EWL_OBJECT(e->cursor), xx, yy, ww, hh);
-       ewl_widget_configure(e->cursor);
 
        /******************************************************************/
 
@@ -241,7 +238,6 @@
 
                ewl_object_request_geometry(EWL_OBJECT(e->selection), xx, yy,
                                            ww, hh);
-               ewl_widget_configure(e->selection);
        }
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_enums.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- ewl_enums.h 14 Jan 2003 21:45:00 -0000      1.26
+++ ewl_enums.h 19 Feb 2003 02:18:05 -0000      1.27
@@ -79,7 +79,8 @@
  */
 typedef enum _ewl_alignment Ewl_Alignment;
 
-enum _ewl_alignment {
+enum _ewl_alignment
+{
        EWL_ALIGNMENT_CENTER = ETOX_ALIGN_CENTER,
        EWL_ALIGNMENT_LEFT = ETOX_ALIGN_LEFT,
        EWL_ALIGNMENT_RIGHT = ETOX_ALIGN_RIGHT,
@@ -93,7 +94,8 @@
  */
 typedef enum _ewl_fill_policy Ewl_Fill_Policy;
 
-enum _ewl_fill_policy {
+enum _ewl_fill_policy
+{
        EWL_FILL_POLICY_NONE = 0,
        EWL_FILL_POLICY_HSHRINK = 1,
        EWL_FILL_POLICY_VSHRINK = 2,
@@ -110,7 +112,8 @@
  */
 typedef enum _ewl_visibility Ewl_Visibility;
 
-enum _ewl_visibility {
+enum _ewl_visibility
+{
        EWL_VISIBILITY_HIDDEN = 0x0,
        EWL_VISIBILITY_SHOWN = 0x1,
        EWL_VISIBILITY_REALIZED = 0x2
@@ -119,7 +122,8 @@
 
 typedef enum _ewl_position Ewl_Position;
 
-enum _ewl_position {
+enum _ewl_position
+{
        EWL_POSITION_LEFT,
        EWL_POSITION_RIGHT,
        EWL_POSITION_TOP,
@@ -128,20 +132,23 @@
 
 typedef enum _ewl_window_flags Ewl_Window_Flags;
 
-enum _ewl_window_flags {
+enum _ewl_window_flags
+{
        EWL_WINDOW_AUTO_SIZE = 1,
        EWL_WINDOW_BORDERLESS = 2
 };
 
 typedef enum _ewl_notebook_flags Ewl_Notebook_Flags;
 
-enum _ewl_notebook_flags {
+enum _ewl_notebook_flags
+{
        EWL_NOTEBOOK_FLAG_TABS_HIDDEN = 0x1
 };
 
 typedef enum _ewl_fx_modifies Ewl_FX_Modifies;
 
-enum _ewl_fx_modifies {
+enum _ewl_fx_modifies
+{
        EWL_FX_MODIFIES_NONE = (0x1 << 0),
        EWL_FX_MODIFIES_ALPHA_CHANNEL = (0x1 << 1),
        EWL_FX_MODIFIES_RED_CHANNEL = (0x1 << 2),
@@ -158,7 +165,8 @@
 
 typedef enum _ewl_scrollbar_flags Ewl_ScrollBar_Flags;
 
-enum _ewl_scrollbar_flags {
+enum _ewl_scrollbar_flags
+{
        EWL_SCROLLBAR_FLAG_NONE,
        EWL_SCROLLBAR_FLAG_AUTO_VISIBLE,
        EWL_SCROLLBAR_FLAG_ALWAYS_HIDDEN
@@ -167,7 +175,8 @@
 
 typedef enum _ewl_filedialog_type Ewl_Filedialog_Type;
 
-enum _ewl_filedialog_type {
+enum _ewl_filedialog_type
+{
        EWL_FILEDIALOG_TYPE_OPEN,
        EWL_FILEDIALOG_TYPE_CLOSE
 };
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_events.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- ewl_events.c        14 Jan 2003 21:45:01 -0000      1.27
+++ ewl_events.c        19 Feb 2003 02:18:05 -0000      1.28
@@ -116,7 +116,6 @@
        if (CURRENT_W(window) != ev->w || CURRENT_H(window) != ev->h) {
                ewl_object_request_geometry(EWL_OBJECT(window), 0, 0, ev->w,
                                            ev->h);
-               ewl_widget_configure(EWL_WIDGET(window));
        }
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_floater.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- ewl_floater.c       14 Aug 2002 02:05:36 -0000      1.7
+++ ewl_floater.c       19 Feb 2003 02:18:05 -0000      1.8
@@ -195,15 +195,20 @@
 void
 __ewl_floater_parent_configure(Ewl_Widget * w, void *ev_data, void *user_data)
 {
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
        DCHECK_PARAM_PTR("w", w);
        DCHECK_PARAM_PTR("user_data", user_data);
 
        ewl_widget_configure(EWL_WIDGET(user_data));
 
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 void __ewl_floater_reparent(Ewl_Widget * w, void *ev_data, void *user_data)
 {
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
        DCHECK_PARAM_PTR("w", w);
        DCHECK_PARAM_PTR("user_data", user_data);
 
@@ -213,6 +218,7 @@
        if (REALIZED(w))
                ewl_widget_theme_update(w);
 
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /*
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_grid.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ewl_grid.c  14 Jan 2003 21:45:02 -0000      1.6
+++ ewl_grid.c  19 Feb 2003 02:18:05 -0000      1.7
@@ -53,9 +53,8 @@
        /*
         * Initialize the grids inherited fields
         */
-       ewl_container_init(EWL_CONTAINER(g),
-                          "/box/vertical", __ewl_grid_add,
-                          __ewl_grid_auto_resize);
+       ewl_container_init(EWL_CONTAINER(g), "vbox", __ewl_grid_add,
+                          __ewl_grid_auto_resize, NULL);
 
        /*
         * Initialize the lists that keep track of the
@@ -597,7 +596,7 @@
        Ewl_Grid_Info  *info;
        int             i, num_spread = 0;
        Ewl_Grid_Child *cdata;
-       int             (*widget_size) (Ewl_Object * o);
+       unsigned int    (*widget_size) (Ewl_Object * o);
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_notebook.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- ewl_notebook.c      14 Jan 2003 21:45:03 -0000      1.18
+++ ewl_notebook.c      19 Feb 2003 02:18:05 -0000      1.19
@@ -530,7 +530,7 @@
         * Initialize the container portion of the notebook and set the fill
         * policy to fill the area available.
         */
-       ewl_container_init(EWL_CONTAINER(w), "/notebook", NULL, NULL);
+       ewl_container_init(EWL_CONTAINER(w), "/notebook", NULL, NULL, NULL);
 
        ewl_object_set_fill_policy(EWL_OBJECT(w), EWL_FILL_POLICY_FILL);
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_object.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- ewl_object.c        2 Feb 2003 21:03:23 -0000       1.26
+++ ewl_object.c        19 Feb 2003 02:18:06 -0000      1.27
@@ -6,7 +6,9 @@
  * @o: the object to initialize
  *
  * Returns no value. Sets all of the fields of the object @o to their default
- * values.
+ * values. NEVER, EVER inherit directly from this class, inherit from the
+ * widget instead. The separation is really just a convenience factor, a
+ * Widget really is the lowest common class.
  */
 void ewl_object_init(Ewl_Object * o)
 {
@@ -43,7 +45,8 @@
  * integers pointed to by the parameters @x, @y, @w, and @h.
  */
 void
-ewl_object_get_current_geometry(Ewl_Object * o, int *x, int *y, int *w, int *h)
+ewl_object_get_current_geometry(Ewl_Object * o, int *x, int *y,
+               unsigned int *w, unsigned int *h)
 {
        DCHECK_PARAM_PTR("o", o);
 
@@ -66,7 +69,8 @@
  * Returns no value. Stores the width and height of object @o into @w and @h
  * respectively.
  */
-void ewl_object_get_current_size(Ewl_Object * o, int *w, int *h)
+void
+ewl_object_get_current_size(Ewl_Object * o, unsigned int *w, unsigned int *h)
 {
        DCHECK_PARAM_PTR("o", o);
 
@@ -110,7 +114,7 @@
  *
  * Returns the current width of the object @o.
  */
-int ewl_object_get_current_w(Ewl_Object * o)
+unsigned int ewl_object_get_current_w(Ewl_Object * o)
 {
        DCHECK_PARAM_PTR_RET("o", o, 0);
 
@@ -124,7 +128,7 @@
  *
  * Returns the current height of the object @o.
  */
-int ewl_object_get_current_h(Ewl_Object * o)
+unsigned int ewl_object_get_current_h(Ewl_Object * o)
 {
        DCHECK_PARAM_PTR_RET("o", o, 0);
 
@@ -143,7 +147,8 @@
  * maximum value or smaller than the objects minimum value. If they are
  * outside these bounds, the size is not altered.
  */
-void ewl_object_set_preferred_size(Ewl_Object * o, int w, int h)
+void ewl_object_set_preferred_size(Ewl_Object * o, unsigned int w,
+               unsigned int h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -163,7 +168,7 @@
  * Returns no value. Sets the preferred of @o width to @w or as close as
  * possible according to the bounds.
  */
-void ewl_object_set_preferred_w(Ewl_Object * o, int w)
+void ewl_object_set_preferred_w(Ewl_Object * o, unsigned int w)
 {
        int             old_size;
 
@@ -205,7 +210,7 @@
  * Returns no value. Sets the preferred of @o height to @w or as close as
  * possible according to the bounds.
  */
-void ewl_object_set_preferred_h(Ewl_Object * o, int h)
+void ewl_object_set_preferred_h(Ewl_Object * o, unsigned int h)
 {
        int             old_size;
 
@@ -248,7 +253,8 @@
  * Returns no value. Stores the width and height of object @o into @w and @h
  * respectively.
  */
-void ewl_object_get_preferred_size(Ewl_Object * o, int *w, int *h)
+void ewl_object_get_preferred_size(Ewl_Object * o,
+               unsigned int *w, unsigned int *h)
 {
        DCHECK_PARAM_PTR("o", o);
 
@@ -264,12 +270,21 @@
  *
  * Returns the preferred width of the object @o.
  */
-int ewl_object_get_preferred_w(Ewl_Object * o)
+unsigned int ewl_object_get_preferred_w(Ewl_Object * o)
 {
+       unsigned int add, temp;
        DCHECK_PARAM_PTR_RET("o", o, 0);
 
-       DRETURN_INT(PREFERRED_W(o) + INSET_HORIZONTAL(o) +
-                       PADDING_HORIZONTAL(o), DLEVEL_STABLE);
+       add = INSET_HORIZONTAL(o) + PADDING_HORIZONTAL(o);
+
+       if (PREFERRED_W(o) < MINIMUM_W(o))
+               temp = MINIMUM_W(o);
+       else
+               temp = PREFERRED_W(o);
+
+       temp += add;
+
+       DRETURN_INT(temp, DLEVEL_STABLE);
 }
 
 /**
@@ -278,12 +293,22 @@
  *
  * Returns the preferred height of the object @o.
  */
-int ewl_object_get_preferred_h(Ewl_Object * o)
+unsigned int ewl_object_get_preferred_h(Ewl_Object * o)
 {
+       unsigned int add, temp;
+
        DCHECK_PARAM_PTR_RET("o", o, 0);
 
-       DRETURN_INT(PREFERRED_H(o) + INSET_VERTICAL(o) + PADDING_VERTICAL(o),
-                       DLEVEL_STABLE);
+       add = INSET_VERTICAL(o) + PADDING_VERTICAL(o);
+
+       if (PREFERRED_H(o) < MINIMUM_H(o))
+               add += MINIMUM_H(o);
+       else
+               add += PREFERRED_H(o);
+
+       temp += add;
+
+       DRETURN_INT(add, DLEVEL_STABLE);
 }
 
 /**
@@ -298,7 +323,8 @@
  * object @o. This is the usual method for requesting a new geometry for an
  * object.
  */
-void ewl_object_request_geometry(Ewl_Object * o, int x, int y, int w, int h)
+void ewl_object_request_geometry(Ewl_Object * o, int x, int y,
+               unsigned int w, unsigned int h)
 {
        /*
         * Pass the parameters on to the appropriate object request functions.
@@ -318,7 +344,7 @@
  * object @o at a later time. This is the usual method for requesting a new
  * size for an object.
  */
-void ewl_object_request_size(Ewl_Object * o, int w, int h)
+void ewl_object_request_size(Ewl_Object * o, unsigned int w, unsigned int h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -364,6 +390,7 @@
        DCHECK_PARAM_PTR("o", o);
 
        CURRENT_X(o) = x + PADDING_LEFT(o) + INSET_LEFT(o);
+       ewl_widget_configure(EWL_WIDGET(o));
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -384,6 +411,7 @@
        DCHECK_PARAM_PTR("o", o);
 
        CURRENT_Y(o) = y + PADDING_TOP(o) + INSET_TOP(o);
+       ewl_widget_configure(EWL_WIDGET(o));
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -397,7 +425,7 @@
  * Returns no value. The given width is stored to be applied to the
  * object @o at a later time.
  */
-void ewl_object_request_w(Ewl_Object * o, int w)
+void ewl_object_request_w(Ewl_Object * o, unsigned int w)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -422,6 +450,7 @@
                CURRENT_W(o) = MAXIMUM_W(o);
        else
                CURRENT_W(o) = w;
+       ewl_widget_configure(EWL_WIDGET(o));
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -435,7 +464,7 @@
  * Returns no value. The given height is stored to be applied to the
  * object @o at a later time.
  */
-void ewl_object_request_h(Ewl_Object * o, int h)
+void ewl_object_request_h(Ewl_Object * o, unsigned int h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -460,6 +489,7 @@
                CURRENT_H(o) = MAXIMUM_H(o);
        else
                CURRENT_H(o) = h;
+       ewl_widget_configure(EWL_WIDGET(o));
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -474,7 +504,7 @@
  * current size or maximum size are less than the new minimum, they are set to
  * the new minimum size.
  */
-void ewl_object_set_minimum_size(Ewl_Object * o, int w, int h)
+void ewl_object_set_minimum_size(Ewl_Object * o, unsigned int w, unsigned int h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("o", o);
@@ -495,18 +525,18 @@
  * current width or maximum width are less than the new minimum, they are set to
  * the new minimum width.
  */
-inline void ewl_object_set_minimum_w(Ewl_Object * o, int w)
+inline void ewl_object_set_minimum_w(Ewl_Object * o, unsigned int w)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("o", o);
 
-       MINIMUM_W(o) = w + PADDING_HORIZONTAL(o) + INSET_HORIZONTAL(o);
+       MINIMUM_W(o) = w;
 
        if (MAXIMUM_W(o) < w)
                MAXIMUM_W(o) = w;
 
        if (CURRENT_W(o) < w)
-               CURRENT_W(o) = w;
+               ewl_object_request_w(o, w);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -521,7 +551,7 @@
  * current height or maximum height are less than the new minimum, they are set
  * to the new minimum height.
  */
-inline void ewl_object_set_minimum_h(Ewl_Object * o, int h)
+inline void ewl_object_set_minimum_h(Ewl_Object * o, unsigned int h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("o", o);
@@ -532,7 +562,7 @@
                MAXIMUM_H(o) = h;
 
        if (CURRENT_H(o) < h)
-               CURRENT_H(o) = h;
+               ewl_object_request_h(o, h);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -543,7 +573,7 @@
  *
  * Returns the minimum width of the object @o.
  */
-inline int ewl_object_get_minimum_w(Ewl_Object * o)
+inline unsigned int ewl_object_get_minimum_w(Ewl_Object * o)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("o", o, 0);
@@ -558,7 +588,7 @@
  *
  * Returns the minimum height of the object @o.
  */
-inline int ewl_object_get_minimum_h(Ewl_Object * o)
+inline unsigned int ewl_object_get_minimum_h(Ewl_Object * o)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("o", o, 0);
@@ -576,7 +606,8 @@
  * Returns no value. Stores the minimum height and width of object @o into the
  * integers pointed to by  @w and @h respectively.
  */
-void ewl_object_get_minimum_size(Ewl_Object * o, int *w, int *h)
+void
+ewl_object_get_minimum_size(Ewl_Object * o, unsigned int *w, unsigned int *h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -601,7 +632,8 @@
  * current size or minimum size are less than the new maximum, they are set to
  * the new maximum size.
  */
-void ewl_object_set_maximum_size(Ewl_Object * o, int w, int h)
+void
+ewl_object_set_maximum_size(Ewl_Object * o, unsigned int w, unsigned int h)
 {
        DCHECK_PARAM_PTR("o", o);
        DENTER_FUNCTION(DLEVEL_STABLE);
@@ -622,22 +654,19 @@
  * current width or minimum width are less than the new maximum, they are set to
  * the new maximum width.
  */
-inline void ewl_object_set_maximum_w(Ewl_Object * o, int w)
+inline void ewl_object_set_maximum_w(Ewl_Object * o, unsigned int w)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("o", o);
 
        MAXIMUM_W(o) = w;
 
-       if (MAXIMUM_W(o) < 0)
-               MAXIMUM_W(o) = EWL_OBJECT_MAX_SIZE;
-
-       if (CURRENT_W(o) > w)
-               CURRENT_W(o) = w;
-
        if (MINIMUM_W(o) > w)
                MINIMUM_W(o) = w;
 
+       if (CURRENT_W(o) > w)
+               ewl_object_request_h(o, w);
+
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
@@ -651,21 +680,18 @@
  * current height or minimum width are less than the new maximum, they are set
  * to the new maximum height.
  */
-inline void ewl_object_set_maximum_h(Ewl_Object * o, int h)
+inline void ewl_object_set_maximum_h(Ewl_Object * o, unsigned int h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("o", o);
 
        o->maximum.h = h;
 
-       if (MAXIMUM_H(o) < 0)
-               MAXIMUM_H(o) = EWL_OBJECT_MAX_SIZE;
-
        if (MINIMUM_H(o) > h)
                o->minimum.h = h;
 
        if (CURRENT_H(o) > h)
-               CURRENT_H(o) = h;
+               ewl_object_request_h(o, h);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -677,7 +703,7 @@
  *
  * Returns the maximum width of the object @o.
  */
-inline int ewl_object_get_maximum_w(Ewl_Object * o)
+inline unsigned int ewl_object_get_maximum_w(Ewl_Object * o)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("o", o, 0);
@@ -694,7 +720,7 @@
  *
  * Returns the maximum height of the object @o.
  */
-inline int ewl_object_get_maximum_h(Ewl_Object * o)
+inline unsigned int ewl_object_get_maximum_h(Ewl_Object * o)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("o", o, 0);
@@ -713,7 +739,8 @@
  * Returns no value. Stores the maximum height and width of object @o into the
  * integers pointed to by  @w and @h respectively.
  */
-void ewl_object_get_maximum_size(Ewl_Object * o, int *w, int *h)
+void
+ewl_object_get_maximum_size(Ewl_Object * o, unsigned int *w, unsigned int *h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -865,11 +892,9 @@
        /*
         * Now update the widgets parent of the change in size.
         */
-       if (dh)
-               ewl_container_resize_child(EWL_WIDGET(o), dh,
+       ewl_container_resize_child(EWL_WIDGET(o), dh,
                                EWL_ORIENTATION_HORIZONTAL);
-       if (dv)
-               ewl_container_resize_child(EWL_WIDGET(o), dv,
+       ewl_container_resize_child(EWL_WIDGET(o), dv,
                                EWL_ORIENTATION_VERTICAL);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
@@ -973,6 +998,9 @@
        DCHECK_PARAM_PTR("o", o);
 
        o->alignment = align;
+
+       if (EWL_WIDGET(o)->parent)
+               ewl_widget_configure(EWL_WIDGET(o)->parent);
 }
 
 /**
@@ -990,6 +1018,9 @@
        DCHECK_PARAM_PTR("o", o);
 
        o->fill_policy = fill;
+
+       if (EWL_WIDGET(o)->parent)
+               ewl_widget_configure(EWL_WIDGET(o)->parent);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_object.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- ewl_object.h        29 Jan 2003 16:56:54 -0000      1.27
+++ ewl_object.h        19 Feb 2003 02:18:06 -0000      1.28
@@ -33,45 +33,54 @@
 
 void            ewl_object_init(Ewl_Object * o);
 void            ewl_object_get_current_geometry(Ewl_Object * o, int *x, int *y,
-                                               int *w, int *h);
+                                               unsigned int *w,
+                                               unsigned int *h);
 
-void            ewl_object_get_current_size(Ewl_Object * o, int *w, int *h);
+void            ewl_object_get_current_size(Ewl_Object * o, unsigned int *w,
+                                           unsigned int *h);
 int             ewl_object_get_current_x(Ewl_Object * o);
 int             ewl_object_get_current_y(Ewl_Object * o);
-int             ewl_object_get_current_w(Ewl_Object * o);
-int             ewl_object_get_current_h(Ewl_Object * o);
+unsigned int    ewl_object_get_current_w(Ewl_Object * o);
+unsigned int    ewl_object_get_current_h(Ewl_Object * o);
 
-void            ewl_object_set_preferred_size(Ewl_Object * o, int w, int h);
-void            ewl_object_get_preferred_size(Ewl_Object * o, int *w, int *h);
-void            ewl_object_set_preferred_w(Ewl_Object * o, int w);
-int             ewl_object_get_preferred_w(Ewl_Object * o);
-void            ewl_object_set_preferred_h(Ewl_Object * o, int h);
-int             ewl_object_get_preferred_h(Ewl_Object * o);
-
-void            ewl_object_request_geometry(Ewl_Object * o, int x, int y, int w,
-                                           int h);
-void            ewl_object_request_size(Ewl_Object * o, int w, int h);
+void            ewl_object_set_preferred_size(Ewl_Object * o, unsigned int w,
+                                             unsigned int h);
+void            ewl_object_get_preferred_size(Ewl_Object * o, unsigned int *w,
+                                             unsigned int *h);
+void            ewl_object_set_preferred_w(Ewl_Object * o, unsigned int w);
+unsigned int    ewl_object_get_preferred_w(Ewl_Object * o);
+void            ewl_object_set_preferred_h(Ewl_Object * o, unsigned int h);
+unsigned int    ewl_object_get_preferred_h(Ewl_Object * o);
+
+void            ewl_object_request_geometry(Ewl_Object * o, int x, int y,
+                                           unsigned int w, unsigned int h);
+void            ewl_object_request_size(Ewl_Object * o, unsigned int w,
+                                       unsigned int h);
 void            ewl_object_request_position(Ewl_Object * o, int x, int y);
 inline void     ewl_object_request_x(Ewl_Object * o, int x);
 inline void     ewl_object_request_y(Ewl_Object * o, int y);
-void            ewl_object_request_w(Ewl_Object * o, int w);
-void            ewl_object_request_h(Ewl_Object * o, int h);
+void            ewl_object_request_w(Ewl_Object * o, unsigned int w);
+void            ewl_object_request_h(Ewl_Object * o, unsigned int h);
 
-void            ewl_object_set_minimum_size(Ewl_Object * o, int w, int h);
-inline void     ewl_object_set_minimum_w(Ewl_Object * o, int w);
-inline void     ewl_object_set_minimum_h(Ewl_Object * o, int h);
-
-void            ewl_object_get_minimum_size(Ewl_Object * o, int *w, int *h);
-inline int      ewl_object_get_minimum_w(Ewl_Object * o);
-inline int      ewl_object_get_minimum_h(Ewl_Object * o);
-
-void            ewl_object_set_maximum_size(Ewl_Object * o, int w, int h);
-inline void     ewl_object_set_maximum_w(Ewl_Object * o, int w);
-inline void     ewl_object_set_maximum_h(Ewl_Object * o, int h);
-
-void            ewl_object_get_maximum_size(Ewl_Object * o, int *w, int *h);
-inline int     ewl_object_get_maximum_w(Ewl_Object * o);
-inline int     ewl_object_get_maximum_h(Ewl_Object * o);
+void            ewl_object_set_minimum_size(Ewl_Object * o, unsigned int w,
+                                           unsigned int h);
+inline void     ewl_object_set_minimum_w(Ewl_Object * o, unsigned int w);
+inline void     ewl_object_set_minimum_h(Ewl_Object * o, unsigned int h);
+
+void            ewl_object_get_minimum_size(Ewl_Object * o, unsigned int *w,
+                                           unsigned int *h);
+inline unsigned int      ewl_object_get_minimum_w(Ewl_Object * o);
+inline unsigned int      ewl_object_get_minimum_h(Ewl_Object * o);
+
+void            ewl_object_set_maximum_size(Ewl_Object * o, unsigned int w,
+                                           unsigned int h);
+inline void     ewl_object_set_maximum_w(Ewl_Object * o, unsigned int w);
+inline void     ewl_object_set_maximum_h(Ewl_Object * o, unsigned int h);
+
+void            ewl_object_get_maximum_size(Ewl_Object * o, unsigned int *w,
+                                           unsigned int *h);
+inline unsigned int    ewl_object_get_maximum_w(Ewl_Object * o);
+inline unsigned        int     ewl_object_get_maximum_h(Ewl_Object * o);
 
 inline void     ewl_object_set_alignment(Ewl_Object * o, Ewl_Alignment align);
 inline         Ewl_Alignment ewl_object_get_alignment(Ewl_Object * o);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_row.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ewl_row.c   3 Feb 2003 06:37:00 -0000       1.3
+++ ewl_row.c   19 Feb 2003 02:18:06 -0000      1.4
@@ -44,7 +44,7 @@
        DCHECK_PARAM_PTR_RET("row", row, FALSE);
 
        ewl_container_init(EWL_CONTAINER(row), "row", __ewl_row_add,
-                       __ewl_row_resize);
+                       __ewl_row_resize, NULL);
 
        ewl_callback_append(EWL_WIDGET(row), EWL_CALLBACK_CONFIGURE,
                        __ewl_row_configure, NULL);
@@ -60,7 +60,7 @@
  * Returns no value. The table of widths for @row is changed to @colw, if
  * @colw is NULL, then each cell is given it's preferred size.
  */
-void ewl_row_set_column_table(Ewl_Row *row, unsigned int *colw)
+void ewl_row_set_column_table(Ewl_Row *row, int n, unsigned int **colw)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -91,24 +91,17 @@
        /*
         * Look up the widths and heights from it's column width table.
         */
-       if (row->colw) {
-               int i = 0;
-
-               while ((child = ewd_list_next(c->children))) {
+       int i = 0;
+       while ((child = ewd_list_next(c->children))) {
+               if (row->colw && row->colw[i]) {
                        ewl_object_request_geometry(child, x, CURRENT_Y(w),
-                                       row->colw[i], PREFERRED_H(child));
-                       i++;
+                                       *row->colw[i], PREFERRED_H(child));
                }
-       }
-       else {
-               /*
-                * In the absence of a column table, just give the cells their
-                * preferred widths.
-                */
-               while ((child = ewd_list_next(c->children))) {
+               else {
                        ewl_object_request_geometry(child, x, CURRENT_Y(w),
                                        PREFERRED_W(child), PREFERRED_H(child));
                }
+               i++;
        }
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_row.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ewl_row.h   3 Feb 2003 06:37:00 -0000       1.3
+++ ewl_row.h   19 Feb 2003 02:18:06 -0000      1.4
@@ -12,11 +12,11 @@
        Ewl_Container container;
        Ewl_Object *max;
 
-       unsigned int *colw;
+       unsigned int **colw;
 };
 
 Ewl_Widget *ewl_row_new();
 int ewl_row_init(Ewl_Row *row);
-void ewl_row_set_column_table(Ewl_Row *row, unsigned int *colw);
+void ewl_row_set_column_table(Ewl_Row *row, int n, unsigned int **colw);
 
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_scrollpane.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- ewl_scrollpane.c    14 Jan 2003 21:45:04 -0000      1.8
+++ ewl_scrollpane.c    19 Feb 2003 02:18:06 -0000      1.9
@@ -60,8 +60,9 @@
 
        w = EWL_WIDGET(s);
 
-       ewl_container_init(EWL_CONTAINER(s), "/scrollpane",
-                          __ewl_scrollpane_add, __ewl_scrollpane_child_resize);
+       ewl_container_init(EWL_CONTAINER(s), "scrollpane",
+                          __ewl_scrollpane_add, __ewl_scrollpane_child_resize,
+                          NULL);
 
        /*
         * Create the container to hold the contents and it's configure
@@ -70,9 +71,9 @@
        s->box = NEW(Ewl_Container, 1);
        ZERO(s->box, Ewl_Container, 1);
        ewl_container_init(EWL_CONTAINER(s->box),
-                          "/scrollpane/box",
+                          "scrollbox",
                           __ewl_scrollpane_box_add,
-                          __ewl_scrollpane_box_resize);
+                          __ewl_scrollpane_box_resize, NULL);
 
        ewl_callback_append(s->box, EWL_CALLBACK_CONFIGURE,
                            __ewl_scrollpane_body_configure, s);
@@ -262,7 +263,6 @@
        /*
         * Configure the parts of the scrollpane.
         */
-       ewl_widget_configure(s->box);
        ewl_widget_configure(s->hscrollbar);
        ewl_widget_configure(s->vscrollbar);
 
@@ -335,8 +335,6 @@
        ewl_object_request_position(EWL_OBJECT(child),
                                    CURRENT_X(w) + INSET_LEFT(w) - woffset,
                                    CURRENT_Y(w) + INSET_TOP(w) - hoffset);
-
-       ewl_widget_configure(EWL_WIDGET(child));
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_seeker.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- ewl_seeker.c        13 Feb 2003 06:54:17 -0000      1.32
+++ ewl_seeker.c        19 Feb 2003 02:18:06 -0000      1.33
@@ -75,7 +75,7 @@
         */
        if (orientation == EWL_ORIENTATION_HORIZONTAL) {
                ewl_container_init(EWL_CONTAINER(w), "hseeker",
-                               NULL, NULL);
+                               NULL, NULL, NULL);
                ewl_object_set_preferred_h(EWL_OBJECT(w), 16);
 
                ewl_object_set_fill_policy(EWL_OBJECT(w),
@@ -83,8 +83,8 @@
                                EWL_FILL_POLICY_HSHRINK);
        }
        else {
-               ewl_container_init(EWL_CONTAINER(w),
-                                  "vseeker", NULL, NULL);
+               ewl_container_init(EWL_CONTAINER(w), "vseeker", NULL, NULL,
+                                  NULL);
                ewl_object_set_preferred_w(EWL_OBJECT(w), 16);
 
                ewl_object_set_fill_policy(EWL_OBJECT(w),
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_selectionbar.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ewl_selectionbar.c  14 Jan 2003 21:45:04 -0000      1.6
+++ ewl_selectionbar.c  19 Feb 2003 02:18:06 -0000      1.7
@@ -84,7 +84,8 @@
        memset(s->bar, 0, sizeof(Ewl_Container));
 
 
-       ewl_container_init(EWL_CONTAINER(s->bar), "/selectionbar", NULL, NULL);
+       ewl_container_init(EWL_CONTAINER(s->bar), "/selectionbar", NULL, NULL,
+                       NULL);
        ewl_object_set_fill_policy(EWL_OBJECT(s->bar), EWL_FILL_POLICY_HFILL |
                                   EWL_FILL_POLICY_HSHRINK);
        ewl_container_append_child(EWL_CONTAINER(w), EWL_WIDGET(s->bar));
@@ -423,12 +424,9 @@
 
                ecore_add_event_timer(close_string, 0.01, __close_bar_cb, ++val,
                                      w);
-
-               ewl_widget_configure(EWL_WIDGET(s));
        } else {
                ewl_object_request_size(o, s->w, 5);
                ewl_object_request_size(so, s->w, 5);
-               ewl_widget_configure(EWL_WIDGET(s));
        }
 
 }
@@ -480,10 +478,6 @@
                                    x - 15, CURRENT_Y(o) + CURRENT_H(o) - 15);
 
 
-       ewl_widget_configure(s->scroller.top);
-       ewl_widget_configure(s->scroller.bottom);
-
-
        ewd_list_goto_first(children);
        while ((child = ewd_list_next(children)) != NULL) {
                if (child != EWL_WIDGET(s->scroller.bottom) &&
@@ -506,8 +500,6 @@
                                                    CURRENT_Y(o) +
                                                    ((CURRENT_H(o) -
                                                      CURRENT_H(child)) / 2));
-
-                       ewl_widget_configure(child);
                }
        }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_selectionbook.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- ewl_selectionbook.c 14 Jan 2003 21:45:04 -0000      1.7
+++ ewl_selectionbook.c 19 Feb 2003 02:18:06 -0000      1.8
@@ -250,8 +250,6 @@
                                            CURRENT_Y(EWL_OBJECT(s)),
                                            CURRENT_W(EWL_OBJECT(s)),
                                            CURRENT_H(EWL_OBJECT(s)));
-
-               ewl_widget_configure(s->current_page->page);
        }
 
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_spinner.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- ewl_spinner.c       14 Aug 2002 02:05:36 -0000      1.32
+++ ewl_spinner.c       19 Feb 2003 02:18:06 -0000      1.33
@@ -171,7 +171,7 @@
 
        w = EWL_WIDGET(s);
 
-       ewl_container_init(EWL_CONTAINER(w), "/spinner", NULL, NULL);
+       ewl_container_init(EWL_CONTAINER(w), "/spinner", NULL, NULL, NULL);
        ewl_object_set_minimum_size(EWL_OBJECT(w), 30, 20);
        ewl_object_set_fill_policy(EWL_OBJECT(w), EWL_FILL_POLICY_FILL);
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_table.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- ewl_table.c 3 Feb 2003 00:21:09 -0000       1.33
+++ ewl_table.c 19 Feb 2003 02:18:06 -0000      1.34
@@ -61,7 +61,7 @@
        /*
         * Iniitialize the tables inherited fields
         */
-       ewl_container_init(EWL_CONTAINER(t), "table", NULL, NULL);
+       ewl_container_init(EWL_CONTAINER(t), "table", NULL, NULL, NULL);
        ewl_object_set_fill_policy(EWL_OBJECT(t), EWL_FILL_POLICY_FILL);
 
        /*
@@ -502,10 +502,6 @@
                                    INSET_RIGHT(o),
                                    CURRENT_H(o) - INSET_TOP(o) +
                                    INSET_BOTTOM(o));
-
-
-
-       ewl_widget_configure(EWL_WIDGET(table->grid));
 
 
        ewd_list_goto_first(EWL_CONTAINER(table->grid)->children);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_text.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -3 -r1.43 -r1.44
--- ewl_text.c  14 Jan 2003 21:45:05 -0000      1.43
+++ ewl_text.c  19 Feb 2003 02:18:06 -0000      1.44
@@ -666,9 +666,7 @@
        estyle_geometry(t->estyle, &x, &y, &width, &height);
 
        /*
-        * Set the preferred size to the size of the estyle and request that
-        * size for the widget.
+        * Set the preferred size to the size of the estyle
         */
        ewl_object_set_preferred_size(EWL_OBJECT(t), width, height);
-       ewl_object_set_custom_size(EWL_OBJECT(t), width, height);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_tree.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ewl_tree.c  2 Feb 2003 23:07:23 -0000       1.2
+++ ewl_tree.c  19 Feb 2003 02:18:06 -0000      1.3
@@ -9,6 +9,10 @@
 static void __ewl_tree_node_configure(Ewl_Widget * w, void *ev_data,
                void *user_data);
 
+void __ewl_tree_node_add(Ewl_Container *c, Ewl_Widget *w);
+void __ewl_tree_node_resize(Ewl_Container *c, Ewl_Widget *w, int size,
+               Ewl_Orientation o);
+
 /**
  * ewl_tree_new - allocate and initialize a new tree widget
  * @columns: the number of columns to display
@@ -54,7 +58,7 @@
        DCHECK_PARAM_PTR_RET("tree", tree, FALSE);
        DCHECK_PARAM_PTR_RET("columns", columns, FALSE);
 
-       ewl_container_init(EWL_CONTAINER(tree), "tree", NULL, NULL);
+       ewl_container_init(EWL_CONTAINER(tree), "tree", NULL, NULL, NULL);
 
        ewl_callback_append(EWL_WIDGET(tree), EWL_CALLBACK_CONFIGURE,
                        __ewl_tree_configure, NULL);
@@ -222,7 +226,8 @@
 
        DCHECK_PARAM_PTR_RET("node", node, FALSE);
 
-       ewl_container_init(EWL_CONTAINER(node), "node", NULL, NULL);
+       ewl_container_init(EWL_CONTAINER(node), "node", __ewl_tree_node_add,
+                       __ewl_tree_node_resize, NULL);
 
        ewl_callback_append(EWL_WIDGET(node), EWL_CALLBACK_CONFIGURE,
                        __ewl_tree_node_configure, NULL);
@@ -249,9 +254,9 @@
         */
        i = 0;
        y = CURRENT_Y(w);
-       h = CURRENT_H(w) / ewd_list_nodes(c->children);
        ewd_list_goto_first(c->children);
        while (i < tree->nrows && (child = ewd_list_next(c->children))) {
+               h = ewl_object_get_preferred_h(child);
                ewl_object_request_geometry(child, CURRENT_X(w), y,
                                CURRENT_W(w), h);
                y += h;
@@ -296,6 +301,38 @@
                ewl_object_request_geometry(child, x, CURRENT_Y(w),
                                CURRENT_W(w), CURRENT_H(w));
        }
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void
+__ewl_tree_node_add(Ewl_Container *c, Ewl_Widget *w)
+{
+       int width;
+       Ewl_Tree_Node *node;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       node = EWL_TREE_NODE(c);
+
+       if (!ewd_list_nodes(c->children) || node->expanded) {
+               ewl_object_set_preferred_h(EWL_OBJECT(c),
+                               ewl_object_get_preferred_h(EWL_OBJECT(c)) +
+                               ewl_object_get_preferred_h(EWL_OBJECT(w)));
+       }
+
+       width = ewl_object_get_preferred_w(EWL_OBJECT(w));
+       if (ewl_object_get_preferred_w(EWL_OBJECT(c)) < width)
+               ewl_object_set_preferred_w(EWL_OBJECT(c), width);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void
+__ewl_tree_node_resize(Ewl_Container *c, Ewl_Widget *w, int size,
+               Ewl_Orientation o)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_window.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- ewl_window.c        24 Jan 2003 17:06:19 -0000      1.41
+++ ewl_window.c        19 Feb 2003 02:18:06 -0000      1.42
@@ -14,6 +14,8 @@
 void            __ewl_window_configure(Ewl_Widget * w, void *ev_data,
                                       void *user_data);
 void            __ewl_window_child_add(Ewl_Container * win, Ewl_Widget * child);
+void            __ewl_window_child_resize(Ewl_Container *c, Ewl_Widget *w,
+                                         int size, Ewl_Orientation o);
 
 /**
  * ewl_window_new - allocate and initialize a new window
@@ -383,7 +385,8 @@
         * Initialize the fields of the inherited container class
         */
        ewl_container_init(EWL_CONTAINER(w), "/window",
-                          __ewl_window_child_add, NULL);
+                          __ewl_window_child_add, __ewl_window_child_resize,
+                          NULL);
        ewl_object_request_size(EWL_OBJECT(w), 256, 256);
 
        w->title = strdup("EWL!");
@@ -556,17 +559,58 @@
                DRETURN(DLEVEL_STABLE);
 
        /*
-        * Resize to fit the preferred size of the contents.
+        * Configure each of the child widgets.
         */
-       ewl_object_set_preferred_size(EWL_OBJECT(w), 0, 0);
+       ewd_list_goto_first(EWL_CONTAINER(w)->children);
+       while ((child = ewd_list_next(EWL_CONTAINER(w)->children))) {
+               /*
+                * Try to give the child the full size of the window from it's
+                * base position. The object will constrict it based on the
+                * fill policy. Don't add the TOP and LEFT insets since
+                * they've already been accounted for.
+                */
+               ewl_object_request_size(child,
+                                       CURRENT_W(w) - (CURRENT_X(child)),
+                                       CURRENT_H(w) - (CURRENT_Y(child)));
+       }
+
+       ecore_window_resize(win->window,
+                       ewl_object_get_current_w(EWL_OBJECT(w)),
+                       ewl_object_get_current_h(EWL_OBJECT(w)));
+       ecore_window_resize(win->evas_window,
+                       ewl_object_get_current_w(EWL_OBJECT(w)),
+                       ewl_object_get_current_h(EWL_OBJECT(w)));
+       evas_output_size_set(win->evas,
+                       ewl_object_get_current_w(EWL_OBJECT(w)),
+                       ewl_object_get_current_h(EWL_OBJECT(w)));
+       evas_output_viewport_set(win->evas,
+                       ewl_object_get_current_x(EWL_OBJECT(w)),
+                       ewl_object_get_current_y(EWL_OBJECT(w)),
+                       ewl_object_get_current_w(EWL_OBJECT(w)),
+                       ewl_object_get_current_h(EWL_OBJECT(w)));
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void __ewl_window_child_add(Ewl_Container * win, Ewl_Widget * child)
+{
+       LAYER(child) += 100;
+}
+
+void __ewl_window_child_resize(Ewl_Container *c, Ewl_Widget *w,
+               int size, Ewl_Orientation o)
+{
+       int            maxw = 0, maxh = 0;
+       Ewl_Window    *win;
+       Ewl_Object    *child;
+
+       child = EWL_OBJECT(w);
+       win = EWL_WINDOW(c);
 
        ewd_list_goto_first(EWL_CONTAINER(win)->children);
        while ((child = ewd_list_next(EWL_CONTAINER(win)->children))) {
-               int             ws;
                int             cs;
 
-               ws = ewl_object_get_preferred_w(EWL_OBJECT(win));
-
                /*
                 * Adjust children for insets
                 */
@@ -581,67 +625,25 @@
                /*
                 * Check the width and x position vs. window width.
                 */
-               if (ws < cs)
-                       ewl_object_set_preferred_w(EWL_OBJECT(win), cs);
+               if (maxw < cs)
+                       maxw = cs;
 
-               ws = ewl_object_get_preferred_h(EWL_OBJECT(win));
                cs = ewl_object_get_current_y(child) +
                        ewl_object_get_preferred_h(child);
 
                /*
                 * Check the height and y position vs. window height.
                 */
-               if (ws < cs)
-                       ewl_object_set_preferred_h(EWL_OBJECT(win), cs);
+               if (maxh < cs)
+                       maxh = cs;
 
        }
 
-       if (win->flags & EWL_WINDOW_AUTO_SIZE) {
-               ewl_object_request_size(EWL_OBJECT(w),
-                               ewl_object_get_preferred_w(EWL_OBJECT(w)),
-                               ewl_object_get_preferred_h(EWL_OBJECT(w)));
-               ecore_window_resize(win->window,
-                               ewl_object_get_current_w(EWL_OBJECT(w)),
-                               ewl_object_get_current_h(EWL_OBJECT(w)));
-       }
-
-       ecore_window_resize(win->evas_window,
-                       ewl_object_get_current_w(EWL_OBJECT(w)),
-                       ewl_object_get_current_h(EWL_OBJECT(w)));
-       evas_output_size_set(win->evas,
-                       ewl_object_get_current_w(EWL_OBJECT(w)),
-                       ewl_object_get_current_h(EWL_OBJECT(w)));
-       evas_output_viewport_set(win->evas,
-                       ewl_object_get_current_x(EWL_OBJECT(w)),
-                       ewl_object_get_current_y(EWL_OBJECT(w)),
-                       ewl_object_get_current_w(EWL_OBJECT(w)),
-                       ewl_object_get_current_h(EWL_OBJECT(w)));
+       ewl_object_set_preferred_size(EWL_OBJECT(win), maxw, maxh);
 
-       /*
-        * Configure each of the child widgets.
-        */
-       ewd_list_goto_first(EWL_CONTAINER(w)->children);
-       while ((child = ewd_list_next(EWL_CONTAINER(w)->children))) {
-               /*
-                * Try to give the child the full size of the window from it's
-                * base position. The object will constrict it based on the
-                * fill policy. Don't add the TOP and LEFT insets since
-                * they've already been accounted for.
-                */
-               ewl_object_request_size(child,
-                                       CURRENT_W(w) - (CURRENT_X(child)),
-                                       CURRENT_H(w) - (CURRENT_Y(child)));
-
-               /*
-                * Now configure the widget.
-                */
-               ewl_widget_configure(EWL_WIDGET(child));
+       if (win->flags & EWL_WINDOW_AUTO_SIZE) {
+               ewl_object_request_size(EWL_OBJECT(c),
+                               ewl_object_get_preferred_w(EWL_OBJECT(c)),
+                               ewl_object_get_preferred_h(EWL_OBJECT(c)));
        }
-
-       DLEAVE_FUNCTION(DLEVEL_STABLE);
-}
-
-void __ewl_window_child_add(Ewl_Container * win, Ewl_Widget * child)
-{
-       LAYER(child) += 100;
 }




-------------------------------------------------------
This SF.net email is sponsored by: SlickEdit Inc. Develop an edge.
The most comprehensive and flexible code editor you can use.
Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial.
www.slickedit.com/sourceforge
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to