diff options
author | Felipe Magno de Almeida <felipe@expertisesolutions.com.br> | 2017-11-20 20:15:54 -0200 |
---|---|---|
committer | Felipe Magno de Almeida <felipe@expertisesolutions.com.br> | 2017-11-20 20:15:54 -0200 |
commit | bf4841350e92b8332611e660c3a1d8b5c5997f2f (patch) | |
tree | 06a84e80aa5b0d2b134f8c608d595de6fb27ba67 | |
parent | 575bb4762948e0cb3535088fbc129250fbcab15d (diff) | |
download | efl-bf4841350e92b8332611e660c3a1d8b5c5997f2f.tar.gz |
elementary: Change Efl_Ui_List_Item to use index by offset of its node
-rw-r--r-- | src/lib/elementary/efl_ui_list.c | 6 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_list_private.h | 2 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_list_segarray.c | 21 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_list_types.eot | 3 |
4 files changed, 24 insertions, 8 deletions
diff --git a/src/lib/elementary/efl_ui_list.c b/src/lib/elementary/efl_ui_list.c index 4addef1d99..2512ce70e1 100644 --- a/src/lib/elementary/efl_ui_list.c +++ b/src/lib/elementary/efl_ui_list.c @@ -468,7 +468,7 @@ _layout_unrealize(Efl_Ui_List_Data *pd, Efl_Ui_List_Item *item) evt.child = item->item.children; evt.layout = item->item.layout; - evt.index = item->item.index; + evt.index = efl_ui_list_item_index_get(item); efl_event_callback_call(item->list, EFL_UI_LIST_EVENT_ITEM_UNREALIZED, &evt); efl_ui_view_model_set(item->item.layout, NULL); @@ -1485,7 +1485,7 @@ _efl_ui_list_efl_ui_list_model_realize(Eo *obj, Efl_Ui_List_Data *pd, Efl_Ui_Lis evt.child = item->children; evt.layout = item->layout; - evt.index = item->index; + evt.index = efl_ui_list_item_index_get(item); efl_event_callback_call(obj, EFL_UI_LIST_EVENT_ITEM_REALIZED, &evt); evas_object_show(item->layout); @@ -1504,7 +1504,7 @@ _efl_ui_list_efl_ui_list_model_unrealize(Eo *obj, Efl_Ui_List_Data *pd, Efl_Ui_L evt.child = item->children; evt.layout = item->layout; - evt.index = item->index; + evt.index = efl_ui_list_item_index_get(item); efl_event_callback_call(obj, EFL_UI_LIST_EVENT_ITEM_UNREALIZED, &evt); efl_ui_view_model_set(item->layout, NULL); diff --git a/src/lib/elementary/efl_ui_list_private.h b/src/lib/elementary/efl_ui_list_private.h index 7c4d2541ea..b34fc04499 100644 --- a/src/lib/elementary/efl_ui_list_private.h +++ b/src/lib/elementary/efl_ui_list_private.h @@ -29,6 +29,8 @@ struct _Efl_Ui_List_Item Eina_Bool longpressed : 1; }; +int efl_ui_list_item_index_get(Efl_Ui_List_Item const* item); + typedef struct _Efl_Ui_List_Data Efl_Ui_List_Data; #include "efl_ui_list_segarray.h" diff --git a/src/lib/elementary/efl_ui_list_segarray.c b/src/lib/elementary/efl_ui_list_segarray.c index 1768815ae1..029850e9fb 100644 --- a/src/lib/elementary/efl_ui_list_segarray.c +++ b/src/lib/elementary/efl_ui_list_segarray.c @@ -89,14 +89,20 @@ void efl_ui_list_segarray_setup(Efl_Ui_List_SegArray* segarray, //int member_siz segarray->array_initial_size = initial_step_size; } -static Efl_Ui_List_Item* _create_item(Efl_Model* model, unsigned int index) +static Efl_Ui_List_Item* _create_item(Efl_Model* model, Efl_Ui_List_SegArray_Node* node, unsigned int off_index) { Efl_Ui_List_Item* item = calloc(1, sizeof(Efl_Ui_List_Item)); item->item.children = model; - item->item.index = index; + item->item.index_offset = off_index; + item->item.tree_node = node; return item; } +/* void efl_ui_list_segarray_insert(Efl_Ui_List* segarray, int index, Efl_Ui_List_Item* item) */ +/* { */ + +/* } */ + void efl_ui_list_segarray_insert_accessor(Efl_Ui_List_SegArray* segarray, int first, Eina_Accessor* accessor) { int i; @@ -114,7 +120,7 @@ void efl_ui_list_segarray_insert_accessor(Efl_Ui_List_SegArray* segarray, int fi if(node) { assert(node->length < node->max); - node->pointers[node->length] = _create_item(children, first + i); + node->pointers[node->length] = _create_item(children, node, i); node->length++; segarray->count++; } @@ -122,7 +128,7 @@ void efl_ui_list_segarray_insert_accessor(Efl_Ui_List_SegArray* segarray, int fi { DBG("no node to add item for index %d!", i + first); node = _alloc_node(segarray, i + first, segarray->array_initial_size); - node->pointers[0] = _create_item(children, first + i); + node->pointers[0] = _create_item(children, node, i); node->length++; segarray->count++; } @@ -312,3 +318,10 @@ Eina_Accessor* efl_ui_list_segarray_node_accessor_get(Efl_Ui_List_SegArray* sega _efl_ui_list_segarray_node_accessor_setup(acc, segarray); return &acc->vtable; } + +int efl_ui_list_item_index_get(Efl_Ui_List_Item const* item) +{ + Efl_Ui_List_SegArray_Node* node = item->item.tree_node; + return item->item.index_offset + node->first; +} + diff --git a/src/lib/elementary/efl_ui_list_types.eot b/src/lib/elementary/efl_ui_list_types.eot index cd45bbaf37..a0997c8db4 100644 --- a/src/lib/elementary/efl_ui_list_types.eot +++ b/src/lib/elementary/efl_ui_list_types.eot @@ -1,7 +1,8 @@ struct Efl.Ui.List.LayoutItem { layout: Efl.Ui.Layout; children: Efl.Model; - index: int; + index_offset: int; + tree_node: void_ptr; min: Eina.Size2D; size: Eina.Size2D; pos: Eina.Position2D; |