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_separator(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_scroller(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_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_spinner(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_index(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);
|
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", test_scroller);
|
||||||
ADD_TEST(NULL, "Scroller", "Scroller 2", test_scroller2);
|
ADD_TEST(NULL, "Scroller", "Scroller 2", test_scroller2);
|
||||||
|
ADD_TEST(NULL, "Scroller", "Scroller 3", test_scroller3);
|
||||||
|
|
||||||
//------------------------------//
|
//------------------------------//
|
||||||
// FIXME: add frame test
|
// 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_resize(win, 320, 480);
|
||||||
evas_object_show(win);
|
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