Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_label.c ewl_paned.c ewl_paned.h ewl_separator.c 
        ewl_separator.h 


Log Message:
API changes, paned is broken now, but it had some issues anyways and nothing
was lost in the code.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_label.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- ewl_label.c 3 Oct 2005 06:43:07 -0000       1.8
+++ ewl_label.c 4 Oct 2005 05:23:26 -0000       1.9
@@ -137,5 +137,3 @@
 
        ewl_object_preferred_inner_size_set(EWL_OBJECT(la), (int)nw, (int)nh);
 }
-
-
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_paned.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_paned.c 3 Oct 2005 06:43:07 -0000       1.4
+++ ewl_paned.c 4 Oct 2005 05:23:26 -0000       1.5
@@ -15,12 +15,11 @@
                                                void *user_data);
 
 /**
- * @param orient: the desired orientation of the paned widget
  * @return Returns NULL on failure, or a pointer to a new paned widget on 
success.
  * @brief Allocate and initialize a new paned widget
  */
 Ewl_Widget *
-ewl_paned_new(Ewl_Orientation orient) 
+ewl_paned_new() 
 {
        Ewl_Paned *pane = NULL;
 
@@ -30,7 +29,7 @@
        if (!pane)
                DRETURN_PTR(NULL, DLEVEL_STABLE);
 
-       if (!ewl_paned_init(pane, orient)) {
+       if (!ewl_paned_init(pane)) {
                ewl_widget_destroy(EWL_WIDGET(pane));
                pane = NULL;
        }
@@ -39,13 +38,52 @@
 }
 
 /**
+ * @return Returns NULL on failure, or a pointer to a new paned widget on 
success.
+ * @brief Allocate and initialize a new paned widget with horizontal 
orientation
+ */
+Ewl_Widget *
+ewl_hpaned_new() 
+{
+       Ewl_Widget *pane = NULL;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       pane = ewl_paned_new();
+
+       if (pane)
+               ewl_box_orientation_set(EWL_BOX(pane),
+                                       EWL_ORIENTATION_HORIZONTAL);
+
+       DRETURN_PTR(pane, DLEVEL_STABLE);
+}
+
+/**
+ * @return Returns NULL on failure, or a pointer to a new paned widget on 
success.
+ * @brief Allocate and initialize a new paned widget with vertical orientation
+ */
+Ewl_Widget *
+ewl_vpaned_new() 
+{
+       Ewl_Widget *pane = NULL;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       pane = ewl_paned_new();
+
+       if (pane)
+               ewl_box_orientation_set(EWL_BOX(pane),
+                                       EWL_ORIENTATION_VERTICAL);
+
+       DRETURN_PTR(pane, DLEVEL_STABLE);
+}
+
+/**
  * @param p: the paned widget to initialize
- * @param orient: the orientation of the paned widget
  * @return Returns 1 on success or 0 on failure
  * @brief Initialize a new paned widget to default values
  */
 int
-ewl_paned_init(Ewl_Paned *p, Ewl_Orientation orient)
+ewl_paned_init(Ewl_Paned *p)
 {
        Ewl_Widget *w = NULL;
 
@@ -58,8 +96,12 @@
                DRETURN_INT(FALSE, DLEVEL_STABLE);
        }
 
-       ewl_box_orientation_set(EWL_BOX(p), orient);
-       p->orientation = orient;
+       ewl_widget_appearance_set(w, "paned");
+       ewl_widget_inherit(w, "paned");
+
+       ewl_callback_prepend(EWL_WIDGET(p), EWL_CALLBACK_CONFIGURE, 
+                                               ewl_paned_configure_cb, NULL);
+
        p->grabbed = FALSE;
 
        p->first = EWL_BOX(ewl_vbox_new());
@@ -67,10 +109,7 @@
        ewl_object_fill_policy_set(EWL_OBJECT(p->first), EWL_FLAG_FILL_ALL);
        ewl_widget_show(EWL_WIDGET(p->first));
 
-       if (orient == EWL_ORIENTATION_HORIZONTAL)
-               p->grabber = EWL_BOX(ewl_hbox_new());
-       else
-               p->grabber = EWL_BOX(ewl_vbox_new());
+       p->grabber = ewl_vseparator_new();
 
        ewl_container_child_append(EWL_CONTAINER(p), EWL_WIDGET(p->grabber));
        ewl_callback_append(EWL_WIDGET(p->grabber), EWL_CALLBACK_MOUSE_DOWN, 
@@ -98,23 +137,12 @@
        p->active = EWL_POSITION_LEFT;
        ewl_container_redirect_set(EWL_CONTAINER(p), EWL_CONTAINER(p->first));
 
-       ewl_widget_appearance_set(w, "paned");
-       ewl_widget_inherit(w, "paned");
        ewl_widget_appearance_set(EWL_WIDGET(p->first), "first");
        ewl_widget_appearance_set(EWL_WIDGET(p->second), "second");
 
-       if (orient == EWL_ORIENTATION_HORIZONTAL) {
-               ewl_widget_appearance_set(EWL_WIDGET(p->grabber),
-                                       "grabber_horizontal");
-               ewl_object_fill_policy_set(EWL_OBJECT(p), 
-                               EWL_FLAG_FILL_HSHRINK | EWL_FLAG_FILL_VFILL);
-
-       } else {
-               ewl_widget_appearance_set(EWL_WIDGET(p->grabber),
-                                       "grabber_vertical");
-               ewl_object_fill_policy_set(EWL_OBJECT(p), 
-                               EWL_FLAG_FILL_VSHRINK | EWL_FLAG_FILL_HFILL);
-       }
+       // ewl_widget_appearance_set(EWL_WIDGET(p->grabber), 
"grabber_horizontal");
+       ewl_object_fill_policy_set(EWL_OBJECT(p), 
+                                  EWL_FLAG_FILL_HSHRINK | EWL_FLAG_FILL_VFILL);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
@@ -227,6 +255,33 @@
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
+void
+ewl_paned_configure_cb(Ewl_Widget *w, void *ev __UNUSED__,
+                      void *user_data __UNUSED__)
+{
+       Ewl_Orientation o;
+       Ewl_Paned *p = EWL_PANED(w);
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       /*
+        * Swap the orientation on the internal boxes if they are changed
+        */
+       o = ewl_box_orientation_get(EWL_BOX(p));
+       if (o == ewl_separator_orientation_get(EWL_SEPARATOR(p->grabber))) {
+               if (o == EWL_ORIENTATION_HORIZONTAL) {
+                       ewl_separator_orientation_set(EWL_SEPARATOR(p->grabber),
+                                       EWL_ORIENTATION_VERTICAL);
+               }
+               else {
+                       ewl_separator_orientation_set(EWL_SEPARATOR(p->grabber),
+                                       EWL_ORIENTATION_HORIZONTAL);
+               }
+       }
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
 static void
 ewl_paned_grabber_mouse_down_cb(Ewl_Widget *w, void *ev __UNUSED__,
                                                        void *user_data)
@@ -275,7 +330,7 @@
                return;
 
        mm = (Ewl_Event_Mouse_Move *)ev;
-       if (p->orientation == EWL_ORIENTATION_HORIZONTAL) {
+       if (ewl_box_orientation_get(EWL_BOX(p)) == EWL_ORIENTATION_HORIZONTAL) {
                int x = mm->x;
 
                // ewl_object_x_request(EWL_OBJECT(p->grabber), x);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_paned.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_paned.h 10 Apr 2005 05:05:18 -0000      1.4
+++ ewl_paned.h 4 Oct 2005 05:23:26 -0000       1.5
@@ -32,27 +32,17 @@
 {
        Ewl_Box                 base;
        Ewl_Box                 *first;
-       Ewl_Box                 *grabber;
+       Ewl_Widget              *grabber;
        Ewl_Box                 *second;
        Ewl_Position            active;
        Ewl_Orientation         orientation;
        int                     grabbed;
 };
 
-/**
- * @def ewl_hpaned_new()
- * Shortcut to allocate a new horizontal Ewl_Paned
- */
-#define ewl_hpaned_new() ewl_paned_new(EWL_ORIENTATION_HORIZONTAL)
-
- /**
-  * @def ewl_vpaned_new()
-  * Shortcut to allocate a new vertial Ewl_Paned
-  */
-#define ewl_vpaned_new() ewl_paned_new(EWL_ORIENTATION_VERTICAL)
-
-Ewl_Widget             *ewl_paned_new(Ewl_Orientation orient);
-int                     ewl_paned_init(Ewl_Paned *p, Ewl_Orientation orient);
+Ewl_Widget             *ewl_paned_new(void);
+Ewl_Widget             *ewl_hpaned_new(void);
+Ewl_Widget             *ewl_vpaned_new(void);
+int                     ewl_paned_init(Ewl_Paned *p);
 
 void                    ewl_paned_active_set(Ewl_Paned *p, Ewl_Position pos);
 Ewl_Position            ewl_paned_active_get(Ewl_Paned *p);
@@ -62,6 +52,12 @@
 void                    ewl_paned_second_pane_append(Ewl_Paned *p, Ewl_Widget 
*w);
 void                    ewl_paned_second_pane_prepend(Ewl_Paned *p, Ewl_Widget 
*w);
 
+
+/*
+ * Internally used callbacks, override at your own risk.
+ */
+void                     ewl_paned_configure_cb(Ewl_Widget *w, void *ev, void 
*user_data);
+
 /**
  * @}
  */
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_separator.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_separator.c     3 Oct 2005 06:43:07 -0000       1.4
+++ ewl_separator.c     4 Oct 2005 05:23:26 -0000       1.5
@@ -4,11 +4,10 @@
 #include "ewl_private.h"
 
 /**
- * @param o: the orientation of the newly allocated separator widget
  * @return Returns pointer to new separator widget on success, NULL on failure.
  * @brief Allocate a new separator widget
  */
-Ewl_Widget     *ewl_separator_new(Ewl_Orientation o)
+Ewl_Widget     *ewl_separator_new()
 {
        Ewl_Separator  *s;
 
@@ -18,43 +17,68 @@
        if (!s)
                DRETURN_PTR(NULL, DLEVEL_STABLE);
 
-       ewl_separator_init(s, o);
+       ewl_separator_init(s);
 
        DRETURN_PTR(EWL_WIDGET(s), DLEVEL_STABLE);
 }
 
 /**
  * @param s: the separator to initialize
- * @param o: the orientation of the separator to be initialized
- * @return Returns no value.
+ * @return Returns TRUE on success, FALSE on failure.
  * @brief Initialize the separator and inherited fields
  *
  * Clears the contents of the separator and stores the
- * default values along with the orientation specified by @a o.
+ * default values.
  */
-void ewl_separator_init(Ewl_Separator * s, Ewl_Orientation o)
+int ewl_separator_init(Ewl_Separator * s)
 {
        Ewl_Widget     *w;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
        w = EWL_WIDGET(s);
-       ewl_widget_init(w);
+       if (!ewl_widget_init(w))
+               DRETURN_INT(FALSE, DLEVEL_STABLE);
+
+       ewl_widget_appearance_set(EWL_WIDGET(s), "hseparator");
+       ewl_object_fill_policy_set(EWL_OBJECT(s), EWL_FLAG_FILL_HFILL);
+       ewl_widget_inherit(w, "separator");
+
+       ewl_object_alignment_set(EWL_OBJECT(s), EWL_FLAG_ALIGN_LEFT);
+
+       s->orientation = EWL_ORIENTATION_HORIZONTAL;
+
+       DRETURN_INT(TRUE, DLEVEL_STABLE);
+}
+
+void
+ewl_separator_orientation_set(Ewl_Separator *s, Ewl_Orientation o)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       DCHECK_PARAM_PTR("s", s);
+
+       if (s->orientation == o)
+               DRETURN(DLEVEL_STABLE);
 
        if (o == EWL_ORIENTATION_HORIZONTAL) {
                ewl_widget_appearance_set(EWL_WIDGET(s), "hseparator");
-               ewl_object_fill_policy_set(EWL_OBJECT(s), EWL_FLAG_FILL_HFILL);
        }
        else {
-               ewl_widget_appearance_set(w, "vseparator");
-               ewl_object_fill_policy_set(EWL_OBJECT(s), EWL_FLAG_FILL_VFILL);
+               ewl_widget_appearance_set(EWL_WIDGET(s), "vseparator");
        }
-       ewl_widget_inherit(w, "separator");
-
-       ewl_object_alignment_set(EWL_OBJECT(s), EWL_FLAG_ALIGN_LEFT);
 
-       s->orientation = o;
+       ewl_widget_configure(EWL_WIDGET(s));
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
+Ewl_Orientation
+ewl_separator_orientation_get(Ewl_Separator *s)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       DCHECK_PARAM_PTR_RET("s", s, EWL_ORIENTATION_HORIZONTAL);
+
+       DRETURN_INT(s->orientation, DLEVEL_STABLE);
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_separator.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ewl_separator.h     17 Feb 2005 19:14:56 -0000      1.3
+++ ewl_separator.h     4 Oct 2005 05:23:26 -0000       1.4
@@ -52,8 +52,10 @@
  */
 #define ewl_vseparator_new() ewl_separator_new(EWL_ORIENTATION_VERTICAL)
 
-Ewl_Widget     *ewl_separator_new(Ewl_Orientation o);
-void            ewl_separator_init(Ewl_Separator * s, Ewl_Orientation o);
+Ewl_Widget     *ewl_separator_new();
+int             ewl_separator_init(Ewl_Separator * s);
+void            ewl_separator_orientation_set(Ewl_Separator *s, 
Ewl_Orientation o);
+Ewl_Orientation ewl_separator_orientation_get(Ewl_Separator *s);
 
 /**
  * @}




-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to