Hey everyone,
I found more unexpected behavior in elm. This time it's about
list_append, directly followed by list_item_bring_in.
It just does not work. Nothing happens.
I wrote a small example and added a solution/workaround which should
either be integrated into elm or into examples/docs.
Basically all that is necessary is a main loop iteration between the
_append and the _bring_in calls.
--
Leif
#include <Elementary.h>
#define EXPAND(o) evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
#define FILL(o) evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL)
Evas_Object *list;
Evas_Object *newest_list_item;
char buf[50];
static int i = 0;
static void _on_done(void *data, Evas_Object *obj, void *event_info);
static void _btn_add_cb(void *data, Evas_Object *obj, void *event_info)
{
snprintf(buf, sizeof(buf), "Item %i", i++);
elm_list_item_append(list, buf, NULL, NULL, NULL, NULL);
}
static void _btn_bring_in_cb(void *data, Evas_Object *obj, void *event_info)
{
Elm_Object_Item *it;
it = eina_list_data_get(eina_list_last(elm_list_items_get(list)));
elm_list_item_bring_in(it);
}
static void _btn_add_and_bring_in_cb(void *data, Evas_Object *obj, void *event_info)
{
Elm_Object_Item *it;
snprintf(buf, sizeof(buf), "Item %i", i++);
it = elm_list_item_append(list, buf, NULL, NULL, NULL, NULL);
ecore_main_loop_iterate();
elm_list_item_bring_in(it);
}
int main(int argc, char *argv[])
{
Evas_Object *win;
Evas_Object *scroller, *box;
Evas_Object *btn;
Evas_Object *e;
elm_init(argc, argv);
win = elm_win_util_standard_add("Elm Playground", "Elm Playground - List append test");
evas_object_show(win);
evas_object_smart_callback_add(win, "delete,request", _on_done, NULL);
box = elm_box_add(win);
evas_object_show(box);
EXPAND(box);
FILL(box);
btn = elm_button_add(box);
evas_object_show(btn);
elm_object_text_set(btn, "Add item");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);
evas_object_smart_callback_add(btn, "clicked", _btn_add_cb, NULL);
elm_box_pack_end(box, btn);
btn = elm_button_add(box);
evas_object_show(btn);
elm_object_text_set(btn, "Bring in last item");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);
evas_object_smart_callback_add(btn, "clicked", _btn_bring_in_cb, NULL);
elm_box_pack_end(box, btn);
btn = elm_button_add(box);
evas_object_show(btn);
elm_object_text_set(btn, "Do both!");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);
evas_object_smart_callback_add(btn, "clicked", _btn_add_and_bring_in_cb, NULL);
elm_box_pack_end(box, btn);
list = elm_list_add(box);
evas_object_show(list);
EXPAND(list);
FILL(list);
for (i = 0; i < 20; i++)
{
snprintf(buf, sizeof(buf), "Item %i", i);
elm_list_item_append(list, buf, NULL, NULL, NULL, NULL);
}
elm_list_go(list);
elm_box_pack_end(box, list);
elm_win_resize_object_add(win, box);
evas_object_resize(win, 200, 400);
elm_run();
elm_shutdown();
return 0;
}
static void
_on_done(void *data, Evas_Object *obj, void *event_info)
{
elm_exit();
}
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel