All pastes #673904 Raw Edit

Unnamed

public diff v1 · immutable
#673904 ·published 2007-08-28 19:54 UTC
rendered paste body
? src/lib/new? src/lib/oldIndex: src/lib/etk_bin.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_bin.c,vretrieving revision 1.23diff -u -r1.23 etk_bin.c--- src/lib/etk_bin.c	21 Aug 2007 15:04:54 -0000	1.23+++ src/lib/etk_bin.c	28 Aug 2007 19:52:57 -0000@@ -46,7 +46,7 @@             ETK_CONSTRUCTOR(_etk_bin_constructor), NULL);        etk_type_property_add(bin_type, "child", ETK_BIN_CHILD_PROPERTY,-            ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE,  etk_property_value_pointer(NULL));+            ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE,  etk_property_value_object(NULL));        bin_type->property_set = _etk_bin_property_set;       bin_type->property_get = _etk_bin_property_get;@@ -121,7 +121,7 @@    switch (property_id)    {       case ETK_BIN_CHILD_PROPERTY:-         etk_bin_child_set(bin, ETK_WIDGET(etk_property_value_pointer_get(value)));+         etk_bin_child_set(bin, ETK_WIDGET(etk_property_value_object_get(value)));          break;       default:          break;@@ -139,7 +139,7 @@    switch (property_id)    {       case ETK_BIN_CHILD_PROPERTY:-         etk_property_value_pointer_set(value, bin->child);+         etk_property_value_object_set(value, ETK_OBJECT(bin->child));          break;       default:          break;Index: src/lib/etk_button.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_button.c,vretrieving revision 1.43diff -u -r1.43 etk_button.c--- src/lib/etk_button.c	21 Aug 2007 15:04:54 -0000	1.43+++ src/lib/etk_button.c	28 Aug 2007 19:52:59 -0000@@ -83,7 +83,7 @@       etk_type_property_add(button_type, "label", ETK_BUTTON_LABEL_PROPERTY,             ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE,  etk_property_value_string(NULL));       etk_type_property_add(button_type, "image", ETK_BUTTON_IMAGE_PROPERTY,-            ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE,  etk_property_value_pointer(NULL));+            ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE,  etk_property_value_object(NULL));       etk_type_property_add(button_type, "xalign", ETK_BUTTON_XALIGN_PROPERTY,             ETK_PROPERTY_FLOAT, ETK_PROPERTY_READABLE_WRITABLE,  etk_property_value_float(0.5));       etk_type_property_add(button_type, "yalign", ETK_BUTTON_YALIGN_PROPERTY,@@ -468,7 +468,7 @@          etk_button_label_set(button, etk_property_value_string_get(value));          break;       case ETK_BUTTON_IMAGE_PROPERTY:-         etk_button_image_set(button, ETK_IMAGE(etk_property_value_pointer_get(value)));+         etk_button_image_set(button, ETK_IMAGE(etk_property_value_object_get(value)));          break;       case ETK_BUTTON_XALIGN_PROPERTY:          etk_button_alignment_set(button, etk_property_value_float_get(value), button->yalign);@@ -501,7 +501,7 @@          etk_property_value_string_set(value, etk_button_label_get(button));          break;       case ETK_BUTTON_IMAGE_PROPERTY:-         etk_property_value_pointer_set(value, ETK_OBJECT(button->image));+         etk_property_value_object_set(value, ETK_OBJECT(button->image));          break;       case ETK_BUTTON_XALIGN_PROPERTY:          etk_property_value_float_set(value, button->xalign);Index: src/lib/etk_combobox.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox.c,vretrieving revision 1.51diff -u -r1.51 etk_combobox.c--- src/lib/etk_combobox.c	21 Aug 2007 15:04:54 -0000	1.51+++ src/lib/etk_combobox.c	28 Aug 2007 19:53:01 -0000@@ -91,14 +91,14 @@             ETK_CONSTRUCTOR(_etk_combobox_constructor), ETK_DESTRUCTOR(_etk_combobox_destructor));        _etk_combobox_signals[ETK_COMBOBOX_ITEM_ACTIVATED_SIGNAL] = etk_signal_new("item-activated",-            combobox_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL);+            combobox_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL);       _etk_combobox_signals[ETK_COMBOBOX_ACTIVE_ITEM_CHANGED_SIGNAL] = etk_signal_new("active-item-changed",             combobox_type, -1, etk_marshaller_VOID__VOID, NULL, NULL);        etk_type_property_add(combobox_type, "items-height", ETK_COMBOBOX_ITEMS_HEIGHT_PROPERTY,             ETK_PROPERTY_INT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_int(DEFAULT_ITEM_HEIGHT));       etk_type_property_add(combobox_type, "active-item", ETK_COMBOBOX_ACTIVE_ITEM_PROPERTY,-            ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL));+            ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL));        combobox_type->property_set = _etk_combobox_property_set;       combobox_type->property_get = _etk_combobox_property_get;@@ -1016,7 +1016,7 @@          etk_combobox_items_height_set(combobox, etk_property_value_int_get(value));          break;       case ETK_COMBOBOX_ACTIVE_ITEM_PROPERTY:-         etk_combobox_active_item_set(combobox, ETK_COMBOBOX_ITEM(etk_property_value_pointer_get(value)));+         etk_combobox_active_item_set(combobox, ETK_COMBOBOX_ITEM(etk_property_value_object_get(value)));          break;       default:          break;@@ -1037,7 +1037,7 @@          etk_property_value_int_set(value, combobox->items_height);          break;       case ETK_COMBOBOX_ACTIVE_ITEM_PROPERTY:-         etk_property_value_pointer_set(value, combobox->active_item);+         etk_property_value_object_set(value, ETK_OBJECT(combobox->active_item));          break;       default:          break;Index: src/lib/etk_combobox_entry.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox_entry.c,vretrieving revision 1.3diff -u -r1.3 etk_combobox_entry.c--- src/lib/etk_combobox_entry.c	21 Aug 2007 15:04:54 -0000	1.3+++ src/lib/etk_combobox_entry.c	28 Aug 2007 19:53:03 -0000@@ -93,7 +93,7 @@       etk_type_property_add(combobox_entry_type, "items-height", ETK_COMBOBOX_ENTRY_ITEMS_HEIGHT_PROPERTY,             ETK_PROPERTY_INT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_int(DEFAULT_ITEM_HEIGHT));       etk_type_property_add(combobox_entry_type, "active-item", ETK_COMBOBOX_ENTRY_ACTIVE_ITEM_PROPERTY,-            ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL));+            ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL));        combobox_entry_type->property_set = _etk_combobox_entry_property_set;       combobox_entry_type->property_get = _etk_combobox_entry_property_get;@@ -950,7 +950,7 @@          etk_combobox_entry_items_height_set(combobox_entry, etk_property_value_int_get(value));          break;       case ETK_COMBOBOX_ENTRY_ACTIVE_ITEM_PROPERTY:-         etk_combobox_entry_active_item_set(combobox_entry, ETK_COMBOBOX_ENTRY_ITEM(etk_property_value_pointer_get(value)));+         etk_combobox_entry_active_item_set(combobox_entry, ETK_COMBOBOX_ENTRY_ITEM(etk_property_value_object_get(value)));          break;       default:          break;@@ -971,7 +971,7 @@          etk_property_value_int_set(value, combobox_entry->items_height);          break;       case ETK_COMBOBOX_ENTRY_ACTIVE_ITEM_PROPERTY:-         etk_property_value_pointer_set(value, combobox_entry->active_item);+         etk_property_value_object_set(value, ETK_OBJECT(combobox_entry->active_item));          break;       default:          break;Index: src/lib/etk_container.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_container.c,vretrieving revision 1.20diff -u -r1.20 etk_container.c--- src/lib/etk_container.c	21 Aug 2007 15:04:54 -0000	1.20+++ src/lib/etk_container.c	28 Aug 2007 19:53:03 -0000@@ -52,9 +52,9 @@             ETK_CONSTRUCTOR(_etk_container_constructor), NULL);        _etk_container_signals[ETK_CONTAINER_CHILD_ADDED_SIGNAL] = etk_signal_new("child-added",-            container_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL);+            container_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL);       _etk_container_signals[ETK_CONTAINER_CHILD_REMOVED_SIGNAL] = etk_signal_new("child-removed",-            container_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL);+            container_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL);        etk_type_property_add(container_type, "border-width", ETK_CONTAINER_BORDER_WIDTH_PROPERTY,             ETK_PROPERTY_INT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_int(0));Index: src/lib/etk_filechooser_widget.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_filechooser_widget.c,vretrieving revision 1.26diff -u -r1.26 etk_filechooser_widget.c--- src/lib/etk_filechooser_widget.c	21 Aug 2007 15:04:54 -0000	1.26+++ src/lib/etk_filechooser_widget.c	28 Aug 2007 19:53:06 -0000@@ -118,8 +118,6 @@    {       filechooser_widget_type = etk_type_new("Etk_Filechooser_Widget", ETK_WIDGET_TYPE, sizeof(Etk_Filechooser_Widget), ETK_CONSTRUCTOR(_etk_filechooser_widget_constructor), ETK_DESTRUCTOR(_etk_filechooser_widget_destructor)); -      //_etk_filechooser_widget_signals[ETK_FILECHOOSER_WIDGET_TEXT_POPPED_SIGNAL] = etk_signal_new("text_popped", filechooser_widget_type, -1, etk_marshaller_VOID__INT_POINTER, NULL, NULL);-       etk_type_property_add(filechooser_widget_type, "path", ETK_FILECHOOSER_WIDGET_PATH_PROPERTY, ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_string(NULL));       etk_type_property_add(filechooser_widget_type, "select-multiple", ETK_FILECHOOSER_WIDGET_SELECT_MULTIPLE_PROPERTY, ETK_PROPERTY_BOOL, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_bool(ETK_FALSE));       etk_type_property_add(filechooser_widget_type, "show-hidden", ETK_FILECHOOSER_WIDGET_SHOW_HIDDEN_PROPERTY, ETK_PROPERTY_BOOL, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_bool(ETK_FALSE));Index: src/lib/etk_marshallers.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_marshallers.c,vretrieving revision 1.8diff -u -r1.8 etk_marshallers.c--- src/lib/etk_marshallers.c	31 Jul 2007 16:49:47 -0000	1.8+++ src/lib/etk_marshallers.c	28 Aug 2007 19:53:06 -0000@@ -65,6 +65,22 @@    callback_VOID__DOUBLE(object, arg1, data); } +/* etk_marshaller_VOID__OBJECT */+void etk_marshaller_VOID__OBJECT(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments)+{+   typedef void (*Etk_Callback_VOID__OBJECT)(Etk_Object *object, Etk_Object *arg1, void *data);+   Etk_Callback_VOID__OBJECT callback_VOID__OBJECT;+   Etk_Object *arg1;++   if (!callback || !object)+      return;++   arg1 = va_arg(arguments, Etk_Object *);++   callback_VOID__OBJECT = (Etk_Callback_VOID__OBJECT)callback;+   callback_VOID__OBJECT(object, arg1, data);+}+ /* etk_marshaller_VOID__POINTER */ void etk_marshaller_VOID__POINTER(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments) {Index: src/lib/etk_marshallers.h===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_marshallers.h,vretrieving revision 1.8diff -u -r1.8 etk_marshallers.h--- src/lib/etk_marshallers.h	31 Jul 2007 16:49:47 -0000	1.8+++ src/lib/etk_marshallers.h	28 Aug 2007 19:53:06 -0000@@ -9,6 +9,7 @@ void etk_marshaller_VOID__INT(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__INT_INT(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__DOUBLE(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments);+void etk_marshaller_VOID__OBJECT(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__POINTER(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__POINTER_POINTER(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__INT_POINTER(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments);Index: src/lib/etk_menu.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_menu.c,vretrieving revision 1.27diff -u -r1.27 etk_menu.c--- src/lib/etk_menu.c	21 Aug 2007 15:04:54 -0000	1.27+++ src/lib/etk_menu.c	28 Aug 2007 19:53:07 -0000@@ -71,7 +71,7 @@          menu_type, -1, etk_marshaller_VOID__VOID, NULL, NULL);        etk_type_property_add(menu_type, "parent-item", ETK_MENU_PARENT_ITEM_PROPERTY,-         ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL));+         ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL));        menu_type->property_set = _etk_menu_property_set;       menu_type->property_get = _etk_menu_property_get;@@ -215,7 +215,7 @@    switch (property_id)    {       case ETK_MENU_PARENT_ITEM_PROPERTY:-         etk_menu_item_submenu_set(ETK_MENU_ITEM(etk_property_value_pointer_get(value)), menu);+         etk_menu_item_submenu_set(ETK_MENU_ITEM(etk_property_value_object_get(value)), menu);          break;       default:          break;@@ -233,7 +233,7 @@    switch (property_id)    {       case ETK_MENU_PARENT_ITEM_PROPERTY:-         etk_property_value_pointer_set(value, menu->parent_item);+         etk_property_value_object_set(value, ETK_OBJECT(menu->parent_item));          break;       default:          break;Index: src/lib/etk_menu_item.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_menu_item.c,vretrieving revision 1.29diff -u -r1.29 etk_menu_item.c--- src/lib/etk_menu_item.c	21 Aug 2007 15:04:54 -0000	1.29+++ src/lib/etk_menu_item.c	28 Aug 2007 19:53:07 -0000@@ -97,7 +97,7 @@       etk_type_property_add(menu_item_type, "label", ETK_MENU_ITEM_LABEL_PROPERTY,          ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_string(NULL));       etk_type_property_add(menu_item_type, "submenu", ETK_MENU_ITEM_SUBMENU_PROPERTY,-         ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL));+         ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL));        menu_item_type->property_set = _etk_menu_item_property_set;       menu_item_type->property_get = _etk_menu_item_property_get;@@ -332,7 +332,7 @@          sizeof(Etk_Menu_Item_Image), NULL, NULL);        etk_type_property_add(menu_item_image_type, "image", ETK_MENU_ITEM_IMAGE_PROPERTY,-         ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL));+         ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL));        menu_item_image_type->property_set = _etk_menu_item_image_property_set;       menu_item_image_type->property_get = _etk_menu_item_image_property_get;@@ -509,8 +509,8 @@       menu_item_radio_type = etk_type_new("Etk_Menu_Item_Radio", ETK_MENU_ITEM_CHECK_TYPE, sizeof(Etk_Menu_Item_Radio),          ETK_CONSTRUCTOR(_etk_menu_item_radio_constructor), ETK_DESTRUCTOR(_etk_menu_item_radio_destructor)); -      etk_type_property_add(menu_item_radio_type, "group", ETK_MENU_ITEM_GROUP_PROPERTY, ETK_PROPERTY_POINTER,-         ETK_PROPERTY_READABLE_WRITABLE,  etk_property_value_pointer(NULL));+      etk_type_property_add(menu_item_radio_type, "group", ETK_MENU_ITEM_GROUP_PROPERTY,+         ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE,  etk_property_value_pointer(NULL));        menu_item_radio_type->property_set = _etk_menu_item_radio_property_set;       menu_item_radio_type->property_get = _etk_menu_item_radio_property_get;@@ -725,7 +725,7 @@          etk_menu_item_label_set(menu_item, etk_property_value_string_get(value));          break;       case ETK_MENU_ITEM_SUBMENU_PROPERTY:-         etk_menu_item_submenu_set(menu_item, ETK_MENU(etk_property_value_pointer_get(value)));+         etk_menu_item_submenu_set(menu_item, ETK_MENU(etk_property_value_object_get(value)));          break;       default:          break;@@ -746,7 +746,7 @@          etk_property_value_string_set(value, menu_item->label);          break;       case ETK_MENU_ITEM_SUBMENU_PROPERTY:-         etk_property_value_pointer_set(value, menu_item->submenu);+         etk_property_value_object_set(value, ETK_OBJECT(menu_item->submenu));          break;       default:          break;@@ -764,7 +764,7 @@    switch (property_id)    {       case ETK_MENU_ITEM_IMAGE_PROPERTY:-         etk_menu_item_image_set(image_item, etk_property_value_pointer_get(value));+         etk_menu_item_image_set(image_item, ETK_IMAGE(etk_property_value_object_get(value)));          break;       default:          break;@@ -782,7 +782,7 @@    switch (property_id)    {       case ETK_MENU_ITEM_IMAGE_PROPERTY:-         etk_property_value_pointer_set(value, menu_item->left_widget);+         etk_property_value_object_set(value, ETK_OBJECT(menu_item->left_widget));          break;       default:          break;Index: src/lib/etk_menu_shell.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_menu_shell.c,vretrieving revision 1.10diff -u -r1.10 etk_menu_shell.c--- src/lib/etk_menu_shell.c	21 Aug 2007 15:04:54 -0000	1.10+++ src/lib/etk_menu_shell.c	28 Aug 2007 19:53:07 -0000@@ -45,9 +45,9 @@          ETK_CONSTRUCTOR(_etk_menu_shell_constructor), ETK_DESTRUCTOR(_etk_menu_shell_destructor));        _etk_menu_shell_signals[ETK_MENU_SHELL_ITEM_ADDED_SIGNAL] = etk_signal_new("item-added",-         menu_shell_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL);+         menu_shell_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL);       _etk_menu_shell_signals[ETK_MENU_SHELL_ITEM_REMOVED_SIGNAL] = etk_signal_new("item-removed",-         menu_shell_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL);+         menu_shell_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL);    }     return menu_shell_type;Index: src/lib/etk_property.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_property.c,vretrieving revision 1.12diff -u -r1.12 etk_property.c--- src/lib/etk_property.c	21 Aug 2007 15:04:55 -0000	1.12+++ src/lib/etk_property.c	28 Aug 2007 19:53:08 -0000@@ -80,7 +80,7 @@       return;     if (value->type == ETK_PROPERTY_STRING)-      free(value->value->string_value);+      free(value->value.string_value);    value->type = ETK_PROPERTY_NONE; } @@ -91,7 +91,6 @@ void etk_property_value_delete(Etk_Property_Value *value) {    etk_property_value_clear(value);-   if (value) free(value->value);    free(value); } @@ -115,7 +114,6 @@ {    Etk_Property_Value *new_value;    new_value = malloc(sizeof(Etk_Property_Value));-   new_value->value = malloc(sizeof(Etk_Property_Value_Value));    new_value->type = ETK_PROPERTY_NONE;    return new_value; }@@ -246,6 +244,19 @@ }  /**+ * @brief Creates a new object property value+ * @param value the value of the new property value+ * @return Returns the new property value+ */+Etk_Property_Value *etk_property_value_object(Etk_Object *value)+{+   Etk_Property_Value *new_value;+   new_value = etk_property_value_new();+   etk_property_value_object_set(new_value, value);+   return new_value;+}++/**  * @brief Creates a new pointer property value  * @param value the value of the new property value  * @return Returns the new property value@@ -351,6 +362,13 @@          etk_property_value_long_set(property_value, value);          break;       }+      case ETK_PROPERTY_OBJECT:+      {+         Etk_Object *value;+         value = va_arg(*arg, Etk_Object *);+         etk_property_value_object_set(property_value, value);+         break;+      }       case ETK_PROPERTY_POINTER:       {          void *value;@@ -381,7 +399,7 @@       return;     etk_property_value_clear(property_value);-   property_value->value->int_value = value;+   property_value->value.int_value = value;    property_value->type = ETK_PROPERTY_INT; } @@ -396,7 +414,7 @@       return;     etk_property_value_clear(property_value);-   property_value->value->bool_value = value;+   property_value->value.bool_value = value;    property_value->type = ETK_PROPERTY_BOOL; } @@ -411,7 +429,7 @@       return;     etk_property_value_clear(property_value);-   property_value->value->char_value = value;+   property_value->value.char_value = value;    property_value->type = ETK_PROPERTY_CHAR; } @@ -426,7 +444,7 @@       return;     etk_property_value_clear(property_value);-   property_value->value->float_value = value;+   property_value->value.float_value = value;    property_value->type = ETK_PROPERTY_FLOAT; } @@ -441,7 +459,7 @@       return;     etk_property_value_clear(property_value);-   property_value->value->double_value = value;+   property_value->value.double_value = value;    property_value->type = ETK_PROPERTY_DOUBLE; } @@ -456,7 +474,7 @@       return;     etk_property_value_clear(property_value);-   property_value->value->short_value = value;+   property_value->value.short_value = value;    property_value->type = ETK_PROPERTY_SHORT; } @@ -471,11 +489,26 @@       return;     etk_property_value_clear(property_value);-   property_value->value->long_value = value;+   property_value->value.long_value = value;    property_value->type = ETK_PROPERTY_LONG; }  /**+ * @brief Sets the object value of a property value+ * @param property_value a property value+ * @param value the value to set+ */+void etk_property_value_object_set(Etk_Property_Value *property_value, Etk_Object *value)+{+   if (!property_value)+      return;++   etk_property_value_clear(property_value);+   property_value->value.object_value = value;+   property_value->type = ETK_PROPERTY_OBJECT;+}++/**  * @brief Sets the pointer value of a property value  * @param property_value a property value  * @param value the value to set@@ -486,7 +519,7 @@       return;     etk_property_value_clear(property_value);-   property_value->value->pointer_value = value;+   property_value->value.pointer_value = value;    property_value->type = ETK_PROPERTY_POINTER; } @@ -502,9 +535,9 @@     etk_property_value_clear(property_value);    if (value)-      property_value->value->string_value = strdup(value);+      property_value->value.string_value = strdup(value);    else-      property_value->value->string_value = NULL;+      property_value->value.string_value = NULL;    property_value->type = ETK_PROPERTY_STRING; } @@ -542,6 +575,9 @@       case ETK_PROPERTY_LONG:          *((long *)value_location) = etk_property_value_long_get(value);          break;+      case ETK_PROPERTY_OBJECT:+         *((Etk_Object **)value_location) = etk_property_value_object_get(value);+         break;       case ETK_PROPERTY_POINTER:          *((void **)value_location) = etk_property_value_pointer_get(value);          break;@@ -562,7 +598,7 @@ {    if (!value || value->type != ETK_PROPERTY_INT)       return 0;-   return value->value->int_value;+   return value->value.int_value; }  /**@@ -574,7 +610,7 @@ {    if (!value || value->type != ETK_PROPERTY_BOOL)       return ETK_FALSE;-   return value->value->bool_value;+   return value->value.bool_value; }  /**@@ -586,7 +622,7 @@ {    if (!value || value->type != ETK_PROPERTY_CHAR)       return 0;-   return value->value->char_value;+   return value->value.char_value; }  /**@@ -598,7 +634,7 @@ {    if (!value || value->type != ETK_PROPERTY_FLOAT)       return 0.0;-   return value->value->float_value;+   return value->value.float_value; }  /**@@ -610,7 +646,7 @@ {    if (!value || value->type != ETK_PROPERTY_DOUBLE)       return 0.0;-   return value->value->double_value;+   return value->value.double_value; }  /**@@ -622,7 +658,7 @@ {    if (!value || value->type != ETK_PROPERTY_SHORT)       return 0;-   return value->value->short_value;+   return value->value.short_value; }  /**@@ -634,7 +670,19 @@ {    if (!value || value->type != ETK_PROPERTY_LONG)       return 0;-   return value->value->long_value;+   return value->value.long_value;+}++/**+ * @brief Gets the object value of the property value+ * @param value a value+ * @return Returns the object value of the property value+ */+Etk_Object *etk_property_value_object_get(Etk_Property_Value *value)+{+   if (!value || value->type != ETK_PROPERTY_OBJECT)+      return NULL;+   return value->value.object_value; }  /**@@ -646,7 +694,7 @@ {    if (!value || value->type != ETK_PROPERTY_POINTER)       return NULL;-   return value->value->pointer_value;+   return value->value.pointer_value; }  /**@@ -658,7 +706,7 @@ {    if (!value || value->type != ETK_PROPERTY_STRING)       return NULL;-   return value->value->string_value;+   return value->value.string_value; }  /** @} */Index: src/lib/etk_property.h===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_property.h,vretrieving revision 1.11diff -u -r1.11 etk_property.h--- src/lib/etk_property.h	27 Jul 2007 16:24:14 -0000	1.11+++ src/lib/etk_property.h	28 Aug 2007 19:53:08 -0000@@ -23,6 +23,7 @@    ETK_PROPERTY_DOUBLE,         /**< The value of the property is a double */    ETK_PROPERTY_SHORT,          /**< The value of the property is a short */    ETK_PROPERTY_LONG,           /**< The value of the property is a long */+   ETK_PROPERTY_OBJECT,         /**< The value of the property is an object (Etk_Object *) */    ETK_PROPERTY_POINTER,        /**< The value of the property is a pointer (void *) */    ETK_PROPERTY_STRING,         /**< The value of the property is a string (char *) */    ETK_PROPERTY_OTHER           /**< Used when none of the above type can be used. The property can't have a default@@ -68,9 +69,11 @@  * @structinfo  */ -typedef struct Etk_Property_Value_Value Etk_Property_Value_Value;-struct Etk_Property_Value_Value+struct Etk_Property_Value {+   /* private: */+   union+   {       int int_value;       Etk_Bool bool_value;       char char_value;@@ -78,14 +81,10 @@       double double_value;       short short_value;       long long_value;+      Etk_Object *object_value;       void *pointer_value;       char *string_value;-};--struct Etk_Property_Value-{-   /* private: */-   Etk_Property_Value_Value *value;+   } value;    Etk_Property_Type type; }; @@ -107,6 +106,7 @@ Etk_Property_Value *etk_property_value_double(double value); Etk_Property_Value *etk_property_value_short(short value); Etk_Property_Value *etk_property_value_long(long value);+Etk_Property_Value *etk_property_value_object(Etk_Object *value); Etk_Property_Value *etk_property_value_pointer(void *value); Etk_Property_Value *etk_property_value_string(const char *value); @@ -119,6 +119,7 @@ void                etk_property_value_double_set(Etk_Property_Value *property_value, double value); void                etk_property_value_short_set(Etk_Property_Value *property_value, short value); void                etk_property_value_long_set(Etk_Property_Value *property_value, long value);+void                etk_property_value_object_set(Etk_Property_Value *property_value, Etk_Object *value); void                etk_property_value_pointer_set(Etk_Property_Value *property_value, void *value); void                etk_property_value_string_set(Etk_Property_Value *property_value, const char *value); @@ -130,6 +131,7 @@ double              etk_property_value_double_get(Etk_Property_Value *value); short               etk_property_value_short_get(Etk_Property_Value *value); long                etk_property_value_long_get(Etk_Property_Value *value);+Etk_Object         *etk_property_value_object_get(Etk_Property_Value *value); void               *etk_property_value_pointer_get(Etk_Property_Value *value); const char         *etk_property_value_string_get(Etk_Property_Value *value); Index: src/lib/etk_toplevel.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_toplevel.c,vretrieving revision 1.7diff -u -r1.7 etk_toplevel.c--- src/lib/etk_toplevel.c	21 Aug 2007 15:04:55 -0000	1.7+++ src/lib/etk_toplevel.c	28 Aug 2007 19:53:10 -0000@@ -54,7 +54,7 @@       etk_type_property_add(toplevel_type, "evas", ETK_TOPLEVEL_EVAS_PROPERTY,          ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE, etk_property_value_pointer(NULL));       etk_type_property_add(toplevel_type, "focused-widget", ETK_TOPLEVEL_FOCUSED_WIDGET_PROPERTY,-         ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL));+         ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL));        toplevel_type->property_set = _etk_toplevel_property_set;       toplevel_type->property_get = _etk_toplevel_property_get;@@ -327,7 +327,7 @@    switch (property_id)    {       case ETK_TOPLEVEL_FOCUSED_WIDGET_PROPERTY:-         etk_toplevel_focused_widget_set(toplevel, ETK_WIDGET(etk_property_value_pointer_get(value)));+         etk_toplevel_focused_widget_set(toplevel, ETK_WIDGET(etk_property_value_object_get(value)));          break;       default:          break;@@ -348,7 +348,7 @@          etk_property_value_pointer_set(value, toplevel->evas);          break;       case ETK_TOPLEVEL_FOCUSED_WIDGET_PROPERTY:-         etk_property_value_pointer_set(value, toplevel->focused_widget);+         etk_property_value_object_set(value, ETK_OBJECT(toplevel->focused_widget));          break;       default:          break;Index: src/lib/etk_widget.c===================================================================RCS file: /cvs/e/e17/libs/etk/src/lib/etk_widget.c,vretrieving revision 1.119diff -u -r1.119 etk_widget.c--- src/lib/etk_widget.c	21 Aug 2007 15:04:55 -0000	1.119+++ src/lib/etk_widget.c	28 Aug 2007 19:53:11 -0000@@ -229,13 +229,13 @@             widget_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL);        etk_type_property_add(widget_type, "parent", ETK_WIDGET_PARENT_PROPERTY,-            ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL));+            ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL));       etk_type_property_add(widget_type, "theme-file", ETK_WIDGET_THEME_FILE_PROPERTY,             ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_string(NULL));       etk_type_property_add(widget_type, "theme-group", ETK_WIDGET_THEME_GROUP_PROPERTY,             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_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(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,@@ -2056,7 +2056,7 @@    switch (property_id)    {       case ETK_WIDGET_PARENT_PROPERTY:-         etk_widget_parent_set(widget, ETK_WIDGET(etk_property_value_pointer_get(value)));+         etk_widget_parent_set(widget, ETK_WIDGET(etk_property_value_object_get(value)));          break;       case ETK_WIDGET_THEME_FILE_PROPERTY:          etk_widget_theme_file_set(widget, etk_property_value_string_get(value));@@ -2065,7 +2065,7 @@          etk_widget_theme_group_set(widget, etk_property_value_string_get(value));          break;       case ETK_WIDGET_THEME_PARENT_PROPERTY:-         etk_widget_theme_parent_set(widget, ETK_WIDGET(etk_property_value_pointer_get(value)));+         etk_widget_theme_parent_set(widget, ETK_WIDGET(etk_property_value_object_get(value)));          break;       case ETK_WIDGET_REQUESTED_WIDTH_PROPERTY:          etk_widget_size_request_set(widget, etk_property_value_int_get(value), widget->requested_size.h);@@ -2117,7 +2117,7 @@    switch (property_id)    {       case ETK_WIDGET_PARENT_PROPERTY:-         etk_property_value_pointer_set(value, ETK_OBJECT(widget->parent));+         etk_property_value_object_set(value, ETK_OBJECT(widget->parent));          break;       case ETK_WIDGET_THEME_FILE_PROPERTY:          etk_property_value_string_set(value, widget->theme_file);@@ -2126,7 +2126,7 @@          etk_property_value_string_set(value, widget->theme_group);          break;       case ETK_WIDGET_THEME_PARENT_PROPERTY:-         etk_property_value_pointer_set(value, widget->theme_parent);+         etk_property_value_object_set(value, ETK_OBJECT(widget->theme_parent));          break;       case ETK_WIDGET_REQUESTED_WIDTH_PROPERTY:          etk_property_value_int_set(value, widget->requested_size.w);