Enlightenment CVS committal

Author  : moom
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_cache.c etk_entry.c etk_entry.h etk_label.c etk_main.c 
        etk_tree2.c etk_tree2.h etk_tree2_model.c etk_tree2_model.h 
        etk_widget.c etk_widget.h etk_window.c etk_window.h 


Log Message:
Lib:
----
* [Tree2] More work and some fixes
* [Widget] Add etk_widget_padding_set()
* Various fixes

Engine:
-------
* [FB engine] Fb engine now supports mouse pointers, window's titles, 
borderless window, + a lot of fixes

Theme:
------
* The widget theme has been separated from the WM theme (the WM theme is 
used by the FB engine)


===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_cache.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- etk_cache.c 7 Jan 2007 03:46:05 -0000       1.11
+++ etk_cache.c 12 Jan 2007 02:53:56 -0000      1.12
@@ -37,6 +37,8 @@
    cache = malloc(sizeof(Etk_Cache));
    cache->cached_objects = NULL;
    cache->size = ETK_MAX(0, size);
+   cache->free_cb = NULL;
+   cache->free_cb_data = NULL;
    
    return cache;
 }
@@ -254,7 +256,7 @@
    if (!cache || !filename)
       return NULL;
    
-   for (l = evas_list_last(cache->cached_objects); l; l = l->prev)
+   for (l = cache->cached_objects; l; l = l->next)
    {
       item = l->data;
       if (strcmp(item->filename, filename) == 0
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- etk_entry.c 28 Nov 2006 21:40:07 -0000      1.22
+++ etk_entry.c 12 Jan 2007 02:53:56 -0000      1.23
@@ -181,6 +181,7 @@
    entry->editable_object = NULL;
    entry->password_mode = ETK_FALSE;
    entry->selection_dragging = ETK_FALSE;
+   entry->pointer_set = ETK_FALSE;
    entry->text = NULL;   
    
    etk_signal_connect("realize", ETK_OBJECT(entry), 
ETK_CALLBACK(_etk_entry_realize_cb), NULL);
@@ -256,6 +257,7 @@
       return;
 
    entry->editable_object = etk_editable_add(evas);
+   evas_object_pass_events_set(entry->editable_object, 1);
    etk_editable_theme_set(entry->editable_object, 
etk_widget_theme_file_get(ETK_WIDGET(entry)),
       etk_widget_theme_group_get(ETK_WIDGET(entry)));
    etk_editable_text_set(entry->editable_object, entry->text);
@@ -420,24 +422,36 @@
       etk_signal_stop();
 }
 
+static int _i = 0;
+
 /* Called when the mouse enters the entry */
 static void _etk_entry_mouse_in_cb(Etk_Object *object, Etk_Event_Mouse_In 
*event, void *data)
 {
-   Etk_Widget *entry_widget;
+   Etk_Entry *entry;
 
-   if (!(entry_widget = ETK_WIDGET(object)))
+   if (!(entry = ETK_ENTRY(object)))
       return;
-   etk_toplevel_pointer_push(etk_widget_toplevel_parent_get(entry_widget), 
ETK_POINTER_TEXT_EDIT);
+   
+   if (!entry->pointer_set)
+   {
+      entry->pointer_set = ETK_TRUE;
+      
etk_toplevel_pointer_push(etk_widget_toplevel_parent_get(ETK_WIDGET(entry)), 
ETK_POINTER_TEXT_EDIT);
+   }
 }
 
 /* Called when the mouse leaves the entry */
 static void _etk_entry_mouse_out_cb(Etk_Object *object, Etk_Event_Mouse_Out 
*event, void *data)
 {
-   Etk_Widget *entry_widget;
+   Etk_Entry *entry;
 
-   if (!(entry_widget = ETK_WIDGET(object)))
+   if (!(entry = ETK_ENTRY(object)))
       return;
-   etk_toplevel_pointer_pop(entry_widget->toplevel_parent, 
ETK_POINTER_TEXT_EDIT);
+   
+   if (entry->pointer_set)
+   {
+      entry->pointer_set = ETK_FALSE;
+      
etk_toplevel_pointer_pop(etk_widget_toplevel_parent_get(ETK_WIDGET(entry)), 
ETK_POINTER_TEXT_EDIT);
+   }
 }
 
 /* Called when the entry is pressed by the mouse */
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- etk_entry.h 6 Oct 2006 17:04:14 -0000       1.7
+++ etk_entry.h 12 Jan 2007 02:53:56 -0000      1.8
@@ -32,6 +32,7 @@
    Evas_Object *editable_object;
    Etk_Bool password_mode;
    Etk_Bool selection_dragging;
+   Etk_Bool pointer_set;
    char *text;
 };
 
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_label.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- etk_label.c 27 Dec 2006 17:35:12 -0000      1.24
+++ etk_label.c 12 Jan 2007 02:53:56 -0000      1.25
@@ -259,7 +259,7 @@
    if (!(label = ETK_LABEL(widget)))
       return;
 
-   etk_widget_size_request(widget, &requested_size);
+   _etk_label_size_request(widget, &requested_size);
    evas_object_move(label->text_object, geometry.x + (geometry.w - 
requested_size.w) * label->xalign,
       geometry.y + (geometry.h - requested_size.h) * label->yalign);
    evas_object_resize(label->text_object, requested_size.w + 1, 
requested_size.h);
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_main.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -3 -r1.35 -r1.36
--- etk_main.c  6 Oct 2006 17:04:14 -0000       1.35
+++ etk_main.c  12 Jan 2007 02:53:56 -0000      1.36
@@ -256,7 +256,16 @@
       etk_toplevel_size_get(ETK_TOPLEVEL(widget), &geometry.w, &geometry.h);
    }
    else
+   {
+      int left, right, top, bottom;
+      
       etk_widget_geometry_get(widget, &geometry.x, &geometry.y, &geometry.w, 
&geometry.h);
+      etk_widget_padding_get(widget, &left, &right, &top, &bottom);
+      geometry.x -= left;
+      geometry.y -= top;
+      geometry.w += left + right;
+      geometry.h += top + bottom;
+   }
    etk_widget_size_allocate(widget, geometry);
    
    for (l = widget->children; l; l = l->next)
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_tree2.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- etk_tree2.c 6 Jan 2007 20:24:43 -0000       1.14
+++ etk_tree2.c 12 Jan 2007 02:53:56 -0000      1.15
@@ -13,6 +13,8 @@
 #include "etk_signal_callback.h"
 #include "etk_utils.h"
 
+/* TODO: bugs with several objects per model.. combining them.. */
+
 /**
  * @addtogroup Etk_Tree2
  * @{
@@ -25,7 +27,6 @@
 #define COL_RESIZE_THRESHOLD 3
 #define MIN_ROW_HEIGHT 12
 #define DEFAULT_ROW_HEIGHT 24
-#define MAX_OBJECTS_PER_MODEL 1
 #define CELL_HMARGINS 4
 #define CELL_VMARGINS 2
 #define MODEL_INTERSPACE 8
@@ -2552,6 +2553,9 @@
    etk_widget_theme_signal_emit(tree->grid, "etk,state,unfocused", ETK_FALSE);
 }
 
+/* TODO: row_clicked event: sometimes it's a Etk_Event_Mouse_Up, sometimes a 
Etk_Event_Mouse_Down... */
+/* TODO: get_row_at_xy... */
+
 /* Called when a key is pressed while the tree is focused */
 static void _etk_tree2_key_down_cb(Etk_Object *object, Etk_Event_Key_Down 
*event, void *data)
 {
@@ -2570,13 +2574,14 @@
    /* Up arrow: Select the previous row */
    else if (strcmp(event->keyname, "Up") == 0)
    {
-      if (!(selected_row = etk_tree2_selected_row_get(tree))
-         || !(row_to_select = etk_tree2_row_walk_prev(selected_row, 
ETK_FALSE)))
+      if (!(selected_row = etk_tree2_selected_row_get(tree)))
       {
          row_to_select = etk_tree2_last_row_get(tree);
          while (!etk_tree2_row_is_folded(row_to_select) && 
etk_tree2_row_last_child_get(row_to_select))
             row_to_select = etk_tree2_row_last_child_get(row_to_select);
       }
+      else
+         row_to_select = etk_tree2_row_walk_prev(selected_row, ETK_FALSE);
       
       _etk_tree2_row_select(tree, row_to_select, event->modifiers);
       etk_tree2_row_scroll_to(row_to_select, ETK_FALSE);
@@ -2585,11 +2590,10 @@
    /* Down arrow: Select the next row */
    else if (strcmp(event->keyname, "Down") == 0)
    {
-      if (!(selected_row = etk_tree2_selected_row_get(tree))
-         || !(row_to_select = etk_tree2_row_walk_next(selected_row, 
ETK_FALSE)))
-      {
+      if (!(selected_row = etk_tree2_selected_row_get(tree)))
          row_to_select = etk_tree2_first_row_get(tree);
-      }
+      else
+         row_to_select = etk_tree2_row_walk_next(selected_row, ETK_FALSE);
       
       _etk_tree2_row_select(tree, row_to_select, event->modifiers);
       etk_tree2_row_scroll_to(row_to_select, ETK_FALSE);
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_tree2.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- etk_tree2.h 6 Jan 2007 20:24:43 -0000       1.11
+++ etk_tree2.h 12 Jan 2007 02:53:56 -0000      1.12
@@ -15,7 +15,8 @@
  * @{
  */
 
-#define MAX_MODELS_PER_COL 2
+#define MAX_MODELS_PER_COL 5
+#define MAX_OBJECTS_PER_MODEL 5
 
 /** Gets the type of a tree */
 #define ETK_TREE2_TYPE       (etk_tree2_type_get())
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_tree2_model.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- etk_tree2_model.c   6 Jan 2007 23:44:39 -0000       1.7
+++ etk_tree2_model.c   12 Jan 2007 02:53:56 -0000      1.8
@@ -46,44 +46,44 @@
 static void _text_cell_data_free(Etk_Tree2_Model *model, void *cell_data);
 static void _text_cell_data_set(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
 static void _text_cell_data_get(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
-static void _text_objects_create(Etk_Tree2_Model *model, Evas_Object 
**cell_objects, Evas *evas);
-static Etk_Bool _text_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas);
-static int _text_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects);
+static void _text_objects_create(Etk_Tree2_Model *model, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
+static Etk_Bool _text_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
+static int _text_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL]);
 
 /* Integer model */
 static void _int_cell_data_set(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
 static void _int_cell_data_get(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
-static Etk_Bool _int_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas);
+static Etk_Bool _int_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
 
 /* Double model */
 static void _double_cell_data_set(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
 static void _double_cell_data_get(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
-static Etk_Bool _double_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas);
+static Etk_Bool _double_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
 
 /* Image model */
 static void _image_model_free(Etk_Tree2_Model *model);
 static void _image_cell_data_free(Etk_Tree2_Model *model, void *cell_data);
 static void _image_cell_data_set(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
 static void _image_cell_data_get(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
-static void _image_objects_cache(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects);
-static Etk_Bool _image_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas);
-static int _image_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects);
+static void _image_objects_cache(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL]);
+static Etk_Bool _image_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
+static int _image_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL]);
 
 /* Checkbox model */
 static void _checkbox_cell_data_set(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
 static void _checkbox_cell_data_get(Etk_Tree2_Model *model, void *cell_data, 
va_list *args);
-static void _checkbox_objects_create(Etk_Tree2_Model *model, Evas_Object 
**cell_objects, Evas *evas);
-static Etk_Bool _checkbox_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas);
-static int _checkbox_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects);
+static void _checkbox_objects_create(Etk_Tree2_Model *model, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
+static Etk_Bool _checkbox_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
+static int _checkbox_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL]);
 static void _checkbox_clicked_cb(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 
 /* Progressbar model */
 static void _progress_bar_cell_data_free(Etk_Tree2_Model *model, void 
*cell_data);
 static void _progress_bar_cell_data_set(Etk_Tree2_Model *model, void 
*cell_data, va_list *args);
 static void _progress_bar_cell_data_get(Etk_Tree2_Model *model, void 
*cell_data, va_list *args);
-static void _progress_bar_objects_create(Etk_Tree2_Model *model, Evas_Object 
**cell_objects, Evas *evas);
-static Etk_Bool _progress_bar_render(Etk_Tree2_Model *model, Etk_Tree2_Row 
*row, Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas 
*evas);
-static int _progress_bar_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects);
+static void _progress_bar_objects_create(Etk_Tree2_Model *model, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
+static Etk_Bool _progress_bar_render(Etk_Tree2_Model *model, Etk_Tree2_Row 
*row, Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
+static int _progress_bar_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL]);
 
 
 /**************************
@@ -341,9 +341,9 @@
 }
 
 /* Text: objects_create() */
-static void _text_objects_create(Etk_Tree2_Model *model, Evas_Object 
**cell_objects, Evas *evas)
+static void _text_objects_create(Etk_Tree2_Model *model, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
-   if (!cell_objects || !evas)
+   if (!evas)
       return;
    
    cell_objects[0] = evas_object_text_add(evas);
@@ -354,12 +354,12 @@
 }
 
 /* Text: render() */
-static Etk_Bool _text_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas)
+static Etk_Bool _text_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
    char **text_data;
    int th;
    
-   if (!(text_data = cell_data) || !cell_objects || !cell_objects[0])
+   if (!(text_data = cell_data) || !cell_objects[0])
       return ETK_FALSE;
    
    evas_object_text_text_set(cell_objects[0], *text_data);
@@ -371,11 +371,11 @@
 }
 
 /* Text: width_get() */
-static int _text_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects)
+static int _text_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL])
 {
    int w;
    
-   if (!cell_objects || !cell_objects[0])
+   if (!cell_objects[0])
       return 0;
    
    evas_object_geometry_get(cell_objects[0], NULL, NULL, &w, NULL);
@@ -411,13 +411,13 @@
 }
 
 /* Int: render() */
-static Etk_Bool _int_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas)
+static Etk_Bool _int_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
    int *int_data;
    char string[256];
    int th;
    
-   if (!(int_data = cell_data) || !cell_objects || !cell_objects[0])
+   if (!(int_data = cell_data) || !cell_objects[0])
       return ETK_FALSE;
    
    snprintf(string, 255, "%d", *int_data);
@@ -458,13 +458,13 @@
 }
 
 /* Double: render() */
-static Etk_Bool _double_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas)
+static Etk_Bool _double_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
    double *double_data;
    char string[256];
    int th;
    
-   if (!(double_data = cell_data) || !model || !cell_objects || 
!cell_objects[0])
+   if (!(double_data = cell_data) || !model || !cell_objects[0])
       return ETK_FALSE;
    
    snprintf(string, 255, "%.2f", *double_data);
@@ -546,12 +546,12 @@
 }
 
 /* Image: objects_cache() */
-static void _image_objects_cache(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects)
+static void _image_objects_cache(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL])
 {
    Etk_Tree2_Model_Image *image_model;
    Etk_Tree2_Model_Image_Data *image_data;
    
-   if (!(image_model = (Etk_Tree2_Model_Image *)model) || !cell_objects || 
!cell_objects[0])
+   if (!(image_model = (Etk_Tree2_Model_Image *)model) || !cell_objects[0])
       return;
    
    image_data = cell_data;
@@ -564,7 +564,7 @@
 }
 
 /* Image: render() */
-static Etk_Bool _image_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas)
+static Etk_Bool _image_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
    Etk_Tree2_Model_Image *image_model;
    Etk_Tree2_Model_Image_Data *image_data;
@@ -574,7 +574,7 @@
    float aspect;
    char *ext;
    
-   if (!(image_model = (Etk_Tree2_Model_Image *)model) || !(image_data = 
cell_data) || !cell_objects || !evas)
+   if (!(image_model = (Etk_Tree2_Model_Image *)model) || !(image_data = 
cell_data) || !evas)
       return ETK_FALSE;
 
    if (!image_data->filename || image_data->type == ETK_TREE2_MODEL_NOT_FOUND)
@@ -697,12 +697,12 @@
 }
 
 /* Image: width_get() */
-static int _image_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects)
+static int _image_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL])
 {
    Etk_Tree2_Model_Image *image_model;
    int w;
    
-   if (!(image_model = (Etk_Tree2_Model_Image *)model) || !cell_objects || 
!cell_objects[0])
+   if (!(image_model = (Etk_Tree2_Model_Image *)model) || !cell_objects[0])
       return 0;
    
    if (image_model->width > 0)
@@ -743,9 +743,9 @@
 }
 
 /* Checkbox: objects_create() */
-static void _checkbox_objects_create(Etk_Tree2_Model *model, Evas_Object 
**cell_objects, Evas *evas)
+static void _checkbox_objects_create(Etk_Tree2_Model *model, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
-   if (!model || !cell_objects || !evas)
+   if (!model || !evas)
       return;
    
    cell_objects[0] = edje_object_add(evas);
@@ -754,12 +754,12 @@
 }
 
 /* Checkbox: render() */
-static Etk_Bool _checkbox_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas)
+static Etk_Bool _checkbox_render(Etk_Tree2_Model *model, Etk_Tree2_Row *row, 
Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
    Etk_Bool *checked;
    int w, h;
    
-   if (!(checked = cell_data) || !cell_objects || !cell_objects[0])
+   if (!(checked = cell_data) || !cell_objects[0])
       return ETK_FALSE;
    
    if (*checked)
@@ -779,11 +779,11 @@
 }
 
 /* Checkbox: width_get() */
-static int _checkbox_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects)
+static int _checkbox_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL])
 {
    int w;
    
-   if (!cell_objects || !cell_objects[0])
+   if (!cell_objects[0])
       return 0;
    
    evas_object_geometry_get(cell_objects[0], NULL, NULL, &w, NULL);
@@ -869,9 +869,9 @@
 }
 
 /* Progressbar: objects_create() */
-static void _progress_bar_objects_create(Etk_Tree2_Model *model, Evas_Object 
**cell_objects, Evas *evas)
+static void _progress_bar_objects_create(Etk_Tree2_Model *model, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
-   if (!model || !cell_objects || !evas)
+   if (!model || !evas)
       return;
    
    cell_objects[0] = edje_object_add(evas);
@@ -879,12 +879,12 @@
 }
 
 /* Progressbar: render() */
-static Etk_Bool _progress_bar_render(Etk_Tree2_Model *model, Etk_Tree2_Row 
*row, Etk_Geometry geometry, void *cell_data, Evas_Object **cell_objects, Evas 
*evas)
+static Etk_Bool _progress_bar_render(Etk_Tree2_Model *model, Etk_Tree2_Row 
*row, Etk_Geometry geometry, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas)
 {
    Etk_Tree2_Model_Progressbar_Data *pbar_data;   
    int w, h;
    
-   if (!(pbar_data = cell_data) || !cell_objects || !cell_objects[0])
+   if (!(pbar_data = cell_data) || !cell_objects[0])
       return ETK_FALSE;
    
    edje_object_part_drag_value_set(cell_objects[0], "etk.dragable.filler", 
0.0, 0.0);
@@ -902,11 +902,11 @@
 }
 
 /* Progressbar: width_get() */
-static int _progress_bar_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object **cell_objects)
+static int _progress_bar_width_get(Etk_Tree2_Model *model, void *cell_data, 
Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL])
 {
    int w;
    
-   if (!cell_objects || !cell_objects[0])
+   if (!cell_objects[0])
       return 0;
    
    evas_object_geometry_get(cell_objects[0], NULL, NULL, &w, NULL);
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_tree2_model.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- etk_tree2_model.h   6 Jan 2007 23:44:39 -0000       1.6
+++ etk_tree2_model.h   12 Jan 2007 02:53:56 -0000      1.7
@@ -4,6 +4,7 @@
 
 #include <stdarg.h>
 #include <Evas.h>
+#include "etk_tree2.h"
 #include "etk_types.h"
 
 /**
@@ -27,10 +28,10 @@
    void (*cell_data_free)(Etk_Tree2_Model *model, void *cell_data);
    void (*cell_data_set)(Etk_Tree2_Model *model, void *cell_data, va_list 
*args);
    void (*cell_data_get)(Etk_Tree2_Model *model, void *cell_data, va_list 
*args);
-   void (*objects_create)(Etk_Tree2_Model *model, Evas_Object **cell_objects, 
Evas *evas);
-   void (*objects_cache)(Etk_Tree2_Model *model, void *cell_data, Evas_Object 
**cell_objects);
-   Etk_Bool (*render)(Etk_Tree2_Model *model, Etk_Tree2_Row *row, Etk_Geometry 
geometry, void *cell_data, Evas_Object **cell_objects, Evas *evas);
-   int (*width_get)(Etk_Tree2_Model *model, void *cell_data, Evas_Object 
**cell_objects);
+   void (*objects_create)(Etk_Tree2_Model *model, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL], Evas *evas);
+   void (*objects_cache)(Etk_Tree2_Model *model, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL]);
+   Etk_Bool (*render)(Etk_Tree2_Model *model, Etk_Tree2_Row *row, Etk_Geometry 
geometry, void *cell_data, Evas_Object *cell_objects[MAX_OBJECTS_PER_MODEL], 
Evas *evas);
+   int (*width_get)(Etk_Tree2_Model *model, void *cell_data, Evas_Object 
*cell_objects[MAX_OBJECTS_PER_MODEL]);
 };
 
 Etk_Tree2_Model *etk_tree2_model_text_new(void);
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_widget.c,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -3 -r1.92 -r1.93
--- etk_widget.c        31 Dec 2006 13:04:44 -0000      1.92
+++ etk_widget.c        12 Jan 2007 02:53:56 -0000      1.93
@@ -73,6 +73,7 @@
    ETK_WIDGET_THEME_FILE_PROPERTY,
    ETK_WIDGET_THEME_GROUP_PROPERTY,
    ETK_WIDGET_THEME_PARENT_PROPERTY,
+   ETK_WIDGET_PADDING_PROPERTY,
    ETK_WIDGET_GEOMETRY_PROPERTY,
    ETK_WIDGET_WIDTH_REQUEST_PROPERTY,
    ETK_WIDGET_HEIGHT_REQUEST_PROPERTY,
@@ -183,7 +184,7 @@
  * @brief Gets the type of an Etk_Widget
  * @return Returns the type of an Etk_Widget
  */
-Etk_Type *etk_widget_type_get()
+Etk_Type *etk_widget_type_get(void)
 {
    static Etk_Type *widget_type = NULL;
 
@@ -253,6 +254,8 @@
          ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, 
etk_property_value_string(NULL));
       etk_type_property_add(widget_type, "theme_parent", 
ETK_WIDGET_THEME_PARENT_PROPERTY,
          ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, 
etk_property_value_pointer(NULL));
+      etk_type_property_add(widget_type, "padding", 
ETK_WIDGET_PADDING_PROPERTY,
+         ETK_PROPERTY_OTHER, ETK_PROPERTY_NO_ACCESS, NULL);
       etk_type_property_add(widget_type, "geometry", 
ETK_WIDGET_GEOMETRY_PROPERTY,
          ETK_PROPERTY_OTHER, ETK_PROPERTY_NO_ACCESS, NULL);
       etk_type_property_add(widget_type, "width_request", 
ETK_WIDGET_WIDTH_REQUEST_PROPERTY, 
@@ -324,7 +327,8 @@
 
 /**
  * @brief Gets the inner geometry of the widget, relative to the top-left 
corner of the Evas where it is drawn. @n
- * The inner geometry takes the inset values (horizontal and vertical 
paddings) into account
+ * The inner geometry corresponds to the rectangle in which the widget's 
children are rendered. This rectangle may be
+ * smaller than the geometry of the widget because inset values can be set by 
the theme
  * @param widget a widget
  * @param x the location where to store the inner x position of the widget
  * @param y the location where to store the inner y position of the widget
@@ -340,6 +344,49 @@
 }
 
 /**
+ * @brief Sets the padding on the different sides of the widget.
+ * The padding adds blank space to the sides of the widget
+ * @param widget a widget
+ * @param left the padding at the left of the widget
+ * @param right the padding at the right of the widget
+ * @param top the padding at the top of the widget
+ * @param bottom the padding at the bottom of the widget
+ */
+void etk_widget_padding_set(Etk_Widget *widget, int left, int right, int top, 
int bottom)
+{
+   if (!widget)
+      return;
+   
+   widget->padding.left = ETK_MAX(0, left);
+   widget->padding.right = ETK_MAX(0, right);
+   widget->padding.top = ETK_MAX(0, top);
+   widget->padding.bottom = ETK_MAX(0, bottom);
+   
+   etk_object_notify(ETK_OBJECT(widget), "padding");
+   etk_widget_size_recalc_queue(widget);
+}
+
+/**
+ * @brief Gets the padding on the different sides of the widget
+ * @param widget a widget
+ * @param left the location where to store the padding at the left of the 
widget
+ * @param right the location where to store the padding at the right of the 
widget
+ * @param top the location where to store the padding at the top of the widget
+ * @param bottom the location where to store the padding at the bottom of the 
widget
+ */
+void etk_widget_padding_get(Etk_Widget *widget, int *left, int *right, int 
*top, int *bottom)
+{
+   if (left)
+      *left = widget ? widget->padding.left : 0;
+   if (right)
+      *right = widget ? widget->padding.right : 0;
+   if (top)
+      *top = widget ? widget->padding.top : 0;
+   if (bottom)
+      *bottom = widget ? widget->padding.bottom : 0;
+}
+
+/**
  * @brief Gets the toplevel widget that contains @a widget
  * @param widget a widget
  * @return Returns the toplevel widget if @a widget is contained by a toplevel 
widget, or NULL otherwise
@@ -945,6 +992,7 @@
  * @param widget a widget
  * @param w the width to request (-1 will make Etk calculate it automatically)
  * @param h the height to request (-1 will make Etk calculate it automatically)
+ * @note The padding values will be added to the final size-request
  */
 void etk_widget_size_request_set(Etk_Widget *widget, int w, int h)
 {
@@ -990,8 +1038,8 @@
    
    if (!widget->realized)
    {
-      size_requisition->w = 0;
-      size_requisition->h = 0;
+      size_requisition->w = widget->padding.left + widget->padding.right;
+      size_requisition->h = widget->padding.top + widget->padding.bottom;
       return;
    }
 
@@ -1042,8 +1090,11 @@
 
    if (widget->visible || !hidden_has_no_size)
       widget->last_calced_size = *size_requisition;
+   
+   size_requisition->w += widget->padding.left + widget->padding.right;
+   size_requisition->h += widget->padding.top + widget->padding.bottom;
+   
    widget->need_size_recalc = ETK_FALSE;
-
    etk_signal_emit(_etk_widget_signals[ETK_WIDGET_SIZE_REQUEST_SIGNAL], 
ETK_OBJECT(widget), NULL, size_requisition);
 }
 
@@ -1056,12 +1107,15 @@
  */
 void etk_widget_size_allocate(Etk_Widget *widget, Etk_Geometry geometry)
 {
+   int x, y, w, h;
+   
    if (!widget || widget->swallowed || !widget->smart_object)
       return;
-
-   if (geometry.x != widget->geometry.x || geometry.y != widget->geometry.y || 
widget->need_redraw)
+   
+   evas_object_geometry_get(widget->smart_object, &x, &y, &w, &h);
+   if (geometry.x != x || geometry.y != y || widget->need_redraw)
       evas_object_move(widget->smart_object, geometry.x, geometry.y);
-   if (geometry.w != widget->geometry.w || geometry.h != widget->geometry.h || 
widget->need_redraw)
+   if (geometry.w != w || geometry.h != h || widget->need_redraw)
       evas_object_resize(widget->smart_object, geometry.w, geometry.h);
 }
 
@@ -1800,7 +1854,7 @@
  * @brief Gets the list of the widgets that are dnd destinations
  * @return Returns the list of the dnd destination widgets
  */
-Evas_List *etk_widget_dnd_dest_widgets_get()
+Evas_List *etk_widget_dnd_dest_widgets_get(void)
 {
    return _etk_widget_dnd_dest_widgets;
 }
@@ -1924,6 +1978,10 @@
    widget->inset.right = 0;
    widget->inset.top = 0;
    widget->inset.bottom = 0;
+   widget->padding.left = 0;
+   widget->padding.right = 0;
+   widget->padding.top = 0;
+   widget->padding.bottom = 0;
 
    widget->geometry.x = -1;
    widget->geometry.y = -1;
@@ -3178,6 +3236,9 @@
 
    if (!obj || !(widget = ETK_WIDGET(evas_object_smart_data_get(obj))))
       return;
+   
+   x += widget->padding.left;
+   y += widget->padding.top;
 
    if (x != widget->geometry.x || y != widget->geometry.y)
    {
@@ -3231,6 +3292,9 @@
    
    if (!obj || !(widget = ETK_WIDGET(evas_object_smart_data_get(obj))))
       return;
+   
+   w -= widget->padding.left + widget->padding.right;
+   h -= widget->padding.top + widget->padding.bottom;
 
    if (w != widget->geometry.w || h != widget->geometry.h || 
widget->need_redraw)
    {
@@ -3711,6 +3775,11 @@
  * \par
  * @prop_name "geometry": The geometry of the widget (use 
etk_widget_geometry_get() to get it)
  * @prop_type Other (Etk_Geometry)
+ * @prop_na
+ * \par
+ * @prop_name "padding": The padding on the different sides of the widget
+ * (see etk_widget_padding_set() and etk_widget_padding_get())
+ * @prop_type Other (quadruplets of integers)
  * @prop_na
  * \par
  * @prop_name "width_request": The width requested for the widget (-1 means 
it's calculated automatically)
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_widget.h,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- etk_widget.h        20 Oct 2006 17:51:44 -0000      1.41
+++ etk_widget.h        12 Jan 2007 02:53:56 -0000      1.42
@@ -66,7 +66,7 @@
    struct
    {
       int left, right, top, bottom;
-   } inset;
+   } inset, padding;
    Etk_Geometry geometry;
    Etk_Geometry inner_geometry;
    Etk_Size theme_min_size;
@@ -116,11 +116,13 @@
 };
 
 
-Etk_Type   *etk_widget_type_get();
+Etk_Type   *etk_widget_type_get(void);
 Etk_Widget *etk_widget_new(Etk_Type *widget_type, const char *first_property, 
...);
 
 void etk_widget_geometry_get(Etk_Widget *widget, int *x, int *y, int *w, int 
*h);
 void etk_widget_inner_geometry_get(Etk_Widget *widget, int *x, int *y, int *w, 
int *h);
+void etk_widget_padding_set(Etk_Widget *widget, int left, int right, int top, 
int bottom);
+void etk_widget_padding_get(Etk_Widget *widget, int *left, int *right, int 
*top, int *bottom);
 
 Etk_Toplevel *etk_widget_toplevel_parent_get(Etk_Widget *widget);
 Evas         *etk_widget_toplevel_evas_get(Etk_Widget *widget);
@@ -196,7 +198,7 @@
 
 void         etk_widget_dnd_dest_set(Etk_Widget *widget, Etk_Bool on);
 Etk_Bool     etk_widget_dnd_dest_get(Etk_Widget *widget);
-Evas_List   *etk_widget_dnd_dest_widgets_get();
+Evas_List   *etk_widget_dnd_dest_widgets_get(void);
 void         etk_widget_dnd_source_set(Etk_Widget *widget, Etk_Bool on);
 Etk_Bool     etk_widget_dnd_source_get(Etk_Widget *widget);
 void         etk_widget_dnd_drag_widget_set(Etk_Widget *widget, Etk_Widget 
*drag_widget);
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_window.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- etk_window.c        6 Oct 2006 17:04:15 -0000       1.40
+++ etk_window.c        12 Jan 2007 02:53:56 -0000      1.41
@@ -526,8 +526,6 @@
    if (!window)
       return;
  
-   window->width = 0;
-   window->height = 0; 
    window->wait_size_request = ETK_TRUE;
    window->center = ETK_FALSE;
    window->center_on_window = NULL;
@@ -695,12 +693,6 @@
    if (requested_size->w >= 0 && requested_size->h >= 0)
    {
       etk_engine_window_size_min_set(window, requested_size->w, 
requested_size->h);
-      if (window->width < requested_size->w || window->height < 
requested_size->h)
-      {
-         window->width = ETK_MAX(window->width, requested_size->w);
-         window->height = ETK_MAX(window->height, requested_size->h);
-         etk_engine_window_resize(window, window->width, window->height);
-      }
       
       if (window->wait_size_request)
       {
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_window.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- etk_window.h        6 Oct 2006 17:04:15 -0000       1.18
+++ etk_window.h        12 Jan 2007 02:53:56 -0000      1.19
@@ -38,9 +38,6 @@
 
    void *engine_data;
    
-   int width;
-   int height;
-   
    Etk_Bool (*delete_event)(Etk_Window *window);
    Etk_Bool wait_size_request;
    Etk_Bool center;
@@ -95,7 +92,6 @@
 void     etk_window_skip_pager_hint_set(Etk_Window *window, Etk_Bool 
skip_pager_hint);
 Etk_Bool etk_window_skip_pager_hint_get(Etk_Window *window);
 
-/* Misc */
 Etk_Bool etk_window_hide_on_delete(Etk_Object *window, void *data);
 
 /** @} */



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to