forked from enlightenment/efl
scroller: add example for resizing scroll's content area.
Summary: When content is resized, scrollbar's position is not updated. Add bar position update after bar size is changed. This is sample for resizing issue. Test Plan: elementary_test -> scroller3 Reviewers: jaehwan, woohyun, seoz, raster, Hermet Reviewed By: Hermet Subscribers: raster Differential Revision: https://phab.enlightenment.org/D2291
This commit is contained in:
parent
1a08a10f11
commit
bd8aea0eb0
|
@ -148,6 +148,7 @@ void test_fileselector(void *data, Evas_Object *obj, void *event_info);
|
|||
void test_separator(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_scroller(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_scroller2(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_scroller3(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_spinner(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_index(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_index2(void *data, Evas_Object *obj, void *event_info);
|
||||
|
@ -746,6 +747,7 @@ add_tests:
|
|||
//------------------------------//
|
||||
ADD_TEST(NULL, "Scroller", "Scroller", test_scroller);
|
||||
ADD_TEST(NULL, "Scroller", "Scroller 2", test_scroller2);
|
||||
ADD_TEST(NULL, "Scroller", "Scroller 3", test_scroller3);
|
||||
|
||||
//------------------------------//
|
||||
// FIXME: add frame test
|
||||
|
|
|
@ -473,3 +473,144 @@ test_scroller2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
evas_object_resize(win, 320, 480);
|
||||
evas_object_show(win);
|
||||
}
|
||||
|
||||
static Ecore_Timer *timer = NULL;
|
||||
static int append = 0;
|
||||
static int count = 0;
|
||||
|
||||
void
|
||||
del_item(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
evas_object_del(obj);
|
||||
}
|
||||
|
||||
void
|
||||
append_item(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Evas_Object *bx = data, *bt;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
bt = elm_button_add(bx);
|
||||
snprintf(buf, sizeof(buf), "Item %d", ++count);
|
||||
elm_object_text_set(bt, buf);
|
||||
elm_box_pack_end(bx, bt);
|
||||
evas_object_smart_callback_add(bt, "clicked", del_item, NULL);
|
||||
evas_object_show(bt);
|
||||
}
|
||||
|
||||
void
|
||||
prepend_item(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Evas_Object *bx = data, *bt;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
bt = elm_button_add(bx);
|
||||
snprintf(buf, sizeof(buf), "Item %d", ++count);
|
||||
elm_object_text_set(bt, buf);
|
||||
elm_box_pack_start(bx, bt);
|
||||
evas_object_smart_callback_add(bt, "clicked", del_item, NULL);
|
||||
evas_object_show(bt);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
append_cb(void *data)
|
||||
{
|
||||
Evas_Object *bx = data, *bt;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
bt = elm_button_add(bx);
|
||||
snprintf(buf, sizeof(buf), "Item %d", ++count);
|
||||
elm_object_text_set(bt, buf);
|
||||
elm_box_pack_end(bx, bt);
|
||||
evas_object_smart_callback_add(bt, "clicked", del_item, NULL);
|
||||
evas_object_show(bt);
|
||||
|
||||
append--;
|
||||
|
||||
if (append <= 0)
|
||||
{
|
||||
timer = NULL;
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
else
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
||||
static void
|
||||
append_items(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
append += 10;
|
||||
timer = ecore_timer_add(0.3, append_cb, data);
|
||||
}
|
||||
|
||||
static void
|
||||
win_del_cb(void *data EINA_UNUSED,
|
||||
Evas *e EINA_UNUSED,
|
||||
Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
ecore_timer_del(timer);
|
||||
timer = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
test_scroller3(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Evas_Object *win, *bt, *bt2, *bt3, *bx, *bx2, *bx3, *bx4, *sc;
|
||||
|
||||
win = elm_win_util_standard_add("scroller3", "Scroller 3");
|
||||
elm_win_autodel_set(win, EINA_TRUE);
|
||||
evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, win_del_cb, NULL);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_win_resize_object_add(win, bx);
|
||||
evas_object_show(bx);
|
||||
|
||||
bx2 = elm_box_add(bx);
|
||||
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.1);
|
||||
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_horizontal_set(bx2, EINA_TRUE);
|
||||
elm_box_pack_end(bx, bx2);
|
||||
evas_object_show(bx2);
|
||||
|
||||
bt = elm_button_add(bx2);
|
||||
elm_object_text_set(bt, "Append Item");
|
||||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt2 = elm_button_add(bx2);
|
||||
elm_object_text_set(bt2, "Prepend Item");
|
||||
elm_box_pack_end(bx2, bt2);
|
||||
evas_object_show(bt2);
|
||||
|
||||
bt3 = elm_button_add(bx2);
|
||||
elm_object_text_set(bt3, "Append 10 Items in 3s");
|
||||
elm_box_pack_end(bx2, bt3);
|
||||
evas_object_show(bt3);
|
||||
|
||||
bx3 = elm_box_add(bx);
|
||||
evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.9);
|
||||
elm_box_pack_end(bx, bx3);
|
||||
evas_object_show(bx3);
|
||||
|
||||
sc = elm_scroller_add(bx3);
|
||||
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(bx3, sc);
|
||||
evas_object_show(sc);
|
||||
|
||||
bx4 = elm_box_add(sc);
|
||||
elm_box_padding_set(bx4, 0, 5);
|
||||
evas_object_size_hint_weight_set(bx4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_object_content_set(sc, bx4);
|
||||
evas_object_show(bx4);
|
||||
|
||||
evas_object_smart_callback_add(bt, "clicked", append_item, bx4);
|
||||
evas_object_smart_callback_add(bt2, "clicked", prepend_item, bx4);
|
||||
evas_object_smart_callback_add(bt3, "clicked", append_items, bx4);
|
||||
|
||||
evas_object_resize(win, 500, 500);
|
||||
evas_object_show(win);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue