Hello,
I added tree feature support to
elm_genlist_item_insert_before/after() APIs.
This patch assumes that the previous patch, '[E-devel] [Patch] Tree support
for elm_genlist_item_prepend() API.', is already applied to upstream.
So this patch does not include the changes of the previous patch.
This patch includes API break. I added parent parameter.
To support genlist group index feature, it should have a parent parameter
like elm_genlist_item_append/prepend() do.
Raster already agreed to this API break.
I or my co-worker will introduce genlist group index feature today.
But for the reviewer's convenience, I separated this patch.
- 001.elm_genlist.patch.txt
Patch for src/lib/elm_genlist.c
- 002.elm_genlist.patch.txt
Patch for src/lib/Elementary.h.in, src/bin/test_genlist.c
- 003.elm_genlist.patch.txt
Due to API break, I changes other EFL libraries and applications on SVN.
Anybody can review this and please apply previous patch first then apply
this patch next.
Thanks.
Daniel Juyung Seo (SeoZ)
--- src/lib/elm_genlist.c.ori 2010-12-30 10:48:16.000000000 +0900
+++ src/lib/elm_genlist.c 2010-12-30 10:59:57.000000000 +0900
@@ -2731,6 +2731,7 @@
elm_genlist_item_insert_before(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc,
const void *data,
+ Elm_Genlist_Item *parent,
Elm_Genlist_Item *before,
Elm_Genlist_Item_Flags flags,
Evas_Smart_Cb func,
@@ -2739,17 +2740,17 @@
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
EINA_SAFETY_ON_NULL_RETURN_VAL(before, NULL);
Widget_Data *wd = elm_widget_data_get(obj);
- Elm_Genlist_Item *it = _item_new(wd, itc, data, NULL, flags, func,
+ Elm_Genlist_Item *it = _item_new(wd, itc, data, parent, flags, func,
func_data);
if (!wd) return NULL;
if (!it) return NULL;
- if (!it->parent)
- wd->items = eina_inlist_prepend_relative(wd->items, EINA_INLIST_GET(it),
- EINA_INLIST_GET(before));
- else
+ if (it->parent)
{
- printf("FIXME: 13 tree not handled yet\n");
+ it->parent->items = eina_list_prepend_relative(it->parent->items, it,
+ before);
}
+ wd->items = eina_inlist_prepend_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(before));
it->rel = before;
it->rel->relcount++;
it->before = EINA_TRUE;
@@ -2778,6 +2779,7 @@
elm_genlist_item_insert_after(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc,
const void *data,
+ Elm_Genlist_Item *parent,
Elm_Genlist_Item *after,
Elm_Genlist_Item_Flags flags,
Evas_Smart_Cb func,
@@ -2786,16 +2788,16 @@
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
EINA_SAFETY_ON_NULL_RETURN_VAL(after, NULL);
Widget_Data *wd = elm_widget_data_get(obj);
- Elm_Genlist_Item *it = _item_new(wd, itc, data, NULL, flags, func,
+ Elm_Genlist_Item *it = _item_new(wd, itc, data, parent, flags, func,
func_data);
if (!wd) return NULL;
if (!it) return NULL;
- if (!it->parent)
- wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it),
- EINA_INLIST_GET(after));
- else
+ wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(after));
+ if (it->parent)
{
- printf("FIXME: 14 tree not handled yet\n");
+ it->parent->items = eina_list_append_relative(it->parent->items, it,
+ after);
}
it->rel = after;
it->rel->relcount++;
Index: src/lib/Elementary.h.in
===================================================================
--- src/lib/Elementary.h.in (revision 55776)
+++ src/lib/Elementary.h.in (working copy)
@@ -1728,8 +1728,8 @@ extern "C" {
/* operations to add items */
EAPI Elm_Genlist_Item *elm_genlist_item_append(Evas_Object *obj, const
Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent,
Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data)
EINA_ARG_NONNULL(1);
EAPI Elm_Genlist_Item *elm_genlist_item_prepend(Evas_Object *obj, const
Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent,
Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data)
EINA_ARG_NONNULL(1);
- EAPI Elm_Genlist_Item *elm_genlist_item_insert_before(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *before,
Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data)
EINA_ARG_NONNULL(1, 4);
- EAPI Elm_Genlist_Item *elm_genlist_item_insert_after(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *after,
Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data)
EINA_ARG_NONNULL(1, 4);
+ EAPI Elm_Genlist_Item *elm_genlist_item_insert_before(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent,
Elm_Genlist_Item *before, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func,
const void *func_data) EINA_ARG_NONNULL(1, 4);
+ EAPI Elm_Genlist_Item *elm_genlist_item_insert_after(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent,
Elm_Genlist_Item *after, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func,
const void *func_data) EINA_ARG_NONNULL(1, 4);
/* operations to retrieve existing items */
EAPI Elm_Genlist_Item *elm_genlist_selected_item_get(const Evas_Object
*obj) EINA_ARG_NONNULL(1);
EAPI const Eina_List *elm_genlist_selected_items_get(const Evas_Object
*obj) EINA_ARG_NONNULL(1);
Index: src/bin/test_genlist.c
===================================================================
--- src/bin/test_genlist.c (revision 55776)
+++ src/bin/test_genlist.c (working copy)
@@ -222,6 +222,7 @@ my_gl_insert_before(void *data, Evas_Object *obj _
elm_genlist_item_insert_before(gl, &itc1,
(void *)(long)i/* item data */,
+ NULL/* parent */,
gli_selected /* item before */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
@@ -251,6 +252,7 @@ my_gl_insert_after(void *data, Evas_Object *obj __
elm_genlist_item_insert_after(gl, &itc1,
(void *)(long)i/* item data */,
+ NULL/* parent */,
gli_selected /* item after */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
@@ -384,11 +386,11 @@ test_genlist2(void *data __UNUSED__, Evas_Object *
(void *)1005/* item data */, NULL/* parent
*/, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1005/* func data */);
gli[5] = elm_genlist_item_insert_before(gl, &itc1,
- (void *)1006/* item data */,
gli[2]/* rel */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
- (void *)1006/* func data */);
+ (void *)1006/* item data */, NULL/*
parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */, (void *)1006/*
func data */);
gli[6] = elm_genlist_item_insert_after(gl, &itc1,
- (void *)1007/* item data */, gli[2]/*
rel */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
- (void *)1007/* func data */);
+ (void *)1007/* item data */, NULL/*
parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */, (void *)1007/* func
data */);
elm_box_pack_end(bx, gl);
Index: BINDINGS/perl/Elementary/Elementary.xs
===================================================================
--- BINDINGS/perl/Elementary/Elementary.xs (revision 55777)
+++ BINDINGS/perl/Elementary/Elementary.xs (working copy)
@@ -1275,10 +1275,10 @@ Elm_Genlist_Item *
elm_genlist_item_prepend(Evas_Object *obj, Elm_Genlist_Item_Class *itc, void
*data, Elm_Genlist_Item *parent, Elm_Genlist_Item_Flags flags, void (*func)
(void *data, Evas_Object *obj, void *event_info), void *func_data);
Elm_Genlist_Item *
-elm_genlist_item_insert_before(Evas_Object *obj, Elm_Genlist_Item_Class *itc,
void *data, Elm_Genlist_Item *before, Elm_Genlist_Item_Flags flags, void
(*func) (void *data, Evas_Object *obj, void *event_info), void *func_data);
+elm_genlist_item_insert_before(Evas_Object *obj, Elm_Genlist_Item_Class *itc,
void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item *before,
Elm_Genlist_Item_Flags flags, void (*func) (void *data, Evas_Object *obj, void
*event_info), void *func_data);
Elm_Genlist_Item *
-elm_genlist_item_insert_after(Evas_Object *obj, Elm_Genlist_Item_Class *itc,
void *data, Elm_Genlist_Item *after, Elm_Genlist_Item_Flags flags, void (*func)
(void *data, Evas_Object *obj, void *event_info), void *func_data);
+elm_genlist_item_insert_after(Evas_Object *obj, Elm_Genlist_Item_Class *itc,
void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item *after,
Elm_Genlist_Item_Flags flags, void (*func) (void *data, Evas_Object *obj, void
*event_info), void *func_data);
=cut
Index: BINDINGS/perl/t/elementary_test.t
===================================================================
--- BINDINGS/perl/t/elementary_test.t (revision 55777)
+++ BINDINGS/perl/t/elementary_test.t (working copy)
@@ -2637,6 +2637,7 @@ my_gl_insert_before(void *data, Evas_Object *obj,
gli = elm_genlist_item_insert_before(gl, &itc1,
(void *)i/* item data */,
+ undef/* parent */,
gli_selected /* item before */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
@@ -2667,6 +2668,7 @@ my_gl_insert_after(void *data, Evas_Object *obj, v
gli = elm_genlist_item_insert_after(gl, &itc1,
(void *)i/* item data */,
+ undef/* parent */,
gli_selected /* item after */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
@@ -2788,10 +2790,10 @@ test_genlist2(void *data, Evas_Object *obj, void *
(void *)1005/* item data */, undef/*
parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1005/* func data */);
gli[5] = elm_genlist_item_insert_before(gl, &itc1,
- (void *)1006/* item data */,
gli[2]/* rel */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1006/* item data */, undef/*
parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1006/* func data */);
gli[6] = elm_genlist_item_insert_after(gl, &itc1,
- (void *)1007/* item data */, gli[2]/*
rel */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1007/* item data */, undef/*
parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1007/* func data */);
elm_box_pack_end(bx, gl);
Index:
BINDINGS/python/python-elementary/elementary/elementary.c_elementary_genlist.pxi
===================================================================
---
BINDINGS/python/python-elementary/elementary/elementary.c_elementary_genlist.pxi
(revision 55777)
+++
BINDINGS/python/python-elementary/elementary/elementary.c_elementary_genlist.pxi
(working copy)
@@ -788,6 +788,7 @@ cdef class Genlist(Object):
prm = (item_class, item_data, ret, func)
item = elm_genlist_item_insert_before(self.obj, &item_class.obj,
<void*>prm,
+ NULL,
before,
<Elm_Genlist_Item_Flags>flags,
cb,
<void*>prm)
@@ -840,6 +841,7 @@ cdef class Genlist(Object):
prm = (item_class, item_data, ret, func)
item = elm_genlist_item_insert_after(self.obj, &item_class.obj,
<void*>prm,
+ NULL,
after,
<Elm_Genlist_Item_Flags>flags, cb,
<void*>prm)
Index: BINDINGS/cxx/elementaryxx/src/GenList.cpp
===================================================================
--- BINDINGS/cxx/elementaryxx/src/GenList.cpp (revision 55777)
+++ BINDINGS/cxx/elementaryxx/src/GenList.cpp (working copy)
@@ -216,6 +216,7 @@ GenListItem *GenList::insertInternal (GenListColum
gli = elm_genlist_item_insert_before (o, &mModel->mGLIC,
construction /* item data */,
opItem ? opItem->mItem : NULL /*
parent */,
+ NULL,
flags,
GenList::gl_sel/* func */,
selection /* func data */);
@@ -225,6 +226,7 @@ GenListItem *GenList::insertInternal (GenListColum
gli = elm_genlist_item_insert_after (o, &mModel->mGLIC,
construction /* item data */,
opItem ? opItem->mItem : NULL /*
parent */,
+ NULL,
flags,
GenList::gl_sel/* func */,
selection /* func data */);
Index: BINDINGS/cxx/elementaryxx/include/elementaryxx/GenList.h
===================================================================
--- BINDINGS/cxx/elementaryxx/include/elementaryxx/GenList.h (revision 55777)
+++ BINDINGS/cxx/elementaryxx/include/elementaryxx/GenList.h (working copy)
@@ -384,8 +384,8 @@ class GenList : public Object
#if 0
/* operations to add items */
EAPI Elm_Genlist_Item *elm_genlist_item_prepend(Evas_Object *obj, const
Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent,
Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data);
- EAPI Elm_Genlist_Item *elm_genlist_item_insert_before(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *before,
Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data);
- EAPI Elm_Genlist_Item *elm_genlist_item_insert_after(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *after,
Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data);
+ EAPI Elm_Genlist_Item *elm_genlist_item_insert_before(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent,
Elm_Genlist_Item *before, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func,
const void *func_data);
+ EAPI Elm_Genlist_Item *elm_genlist_item_insert_after(Evas_Object *obj,
const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent,
Elm_Genlist_Item *after, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func,
const void *func_data);
/* operations to retrieve existing items */
Index: elmdentica/src/elmdentica.c
===================================================================
--- elmdentica/src/elmdentica.c (revision 55777)
+++ elmdentica/src/elmdentica.c (working copy)
@@ -1450,7 +1450,7 @@ void add_status(aStatus *as, Elm_Genlist_Item *gli
itc1.func.del = ed_status_del;
if(gli) {
- li = elm_genlist_item_insert_after(gui.timeline, &itc1, as,
gli, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ li = elm_genlist_item_insert_after(gui.timeline, &itc1, as,
NULL, gli, ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_show(li);
} else
li = elm_genlist_item_append(gui.timeline, &itc1, as, NULL,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
Index: enki/src/bin/list_left.c
===================================================================
--- enki/src/bin/list_left.c (revision 55777)
+++ enki/src/bin/list_left.c (working copy)
@@ -133,7 +133,7 @@ void list_left_append_relative(List_Left *list_lef
album);
else
enlil_album_data->list_album_item =
elm_genlist_item_insert_after(list_left->gl_albums, &itc_album,
- album, relative, ELM_GENLIST_ITEM_NONE, _gl_sel,
+ album, NULL, relative, ELM_GENLIST_ITEM_NONE, _gl_sel,
album);
}
Index: PROTO/eyelight_edit/src/bin/slides_list.c
===================================================================
--- PROTO/eyelight_edit/src/bin/slides_list.c (revision 55777)
+++ PROTO/eyelight_edit/src/bin/slides_list.c (working copy)
@@ -253,6 +253,7 @@ void slides_list_slide_append_relative(List_Item *
if(item_prev)
item->item = elm_genlist_item_insert_after(slides_list, &itc_slides,
item,
+ NULL,
item_prev->item,
ELM_GENLIST_ITEM_NONE,
_slides_list_sel,
@@ -299,6 +300,7 @@ void slides_list_item_move(int id, int id_after)
{
item->item = elm_genlist_item_insert_after(slides_list, &itc_slides,
item,
+ NULL,
item_after->item,
ELM_GENLIST_ITEM_NONE,
_slides_list_sel,
------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel