From: Jin Yoon Date: Fri, 21 Jun 2013 04:53:31 +0000 (+0900) Subject: N_SE-42323 : Add the focus feature on the scroller X-Git-Tag: submit/tizen_2.2/20130714.152534~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=06271756138d30c4ec90571b224377269ca1b002;p=apps%2Fhome%2Fmenu-screen.git N_SE-42323 : Add the focus feature on the scroller --- diff --git a/data/org.tizen.menu-screen.xml.in b/data/org.tizen.menu-screen.xml.in index 1efbbca..7edc23f 100755 --- a/data/org.tizen.menu-screen.xml.in +++ b/data/org.tizen.menu-screen.xml.in @@ -1,5 +1,5 @@ - + Jin Yoon Youngjoo Park diff --git a/packaging/org.tizen.menu-screen.spec b/packaging/org.tizen.menu-screen.spec index a4a595e..89aeeb1 100644 --- a/packaging/org.tizen.menu-screen.spec +++ b/packaging/org.tizen.menu-screen.spec @@ -16,7 +16,7 @@ Name: org.tizen.menu-screen Summary: An utility library of the menu screen -Version: 1.1.6 +Version: 1.1.7 Release: 1.1 Group: TO_BE/FILLED_IN License: Flora Software License diff --git a/src/page_scroller.c b/src/page_scroller.c index f928530..0690f96 100644 --- a/src/page_scroller.c +++ b/src/page_scroller.c @@ -95,53 +95,39 @@ HAPI void page_scroller_show_region(Evas_Object *scroller, int idx) static void _anim_stop_cb(void *data, Evas_Object *scroller, void *event_info) { - _D("Invoked"); + _D("stop the scroller(%p) animation", scroller); + + /* page_scroller_focus & index_bring_in in _drag_stop_cb & _anim_stop_cb */ + do { + Evas_Coord x, y, w, h; + elm_scroller_region_get(scroller, &x, &y, &w, &h); + + if (x % w) return; - if (menu_screen_is_tts()) { + int cur_idx = page_scroller_get_current_page_no(scroller); + int idx = 0; + if (w) idx = x / w; + if (cur_idx == idx) return; + + page_scroller_bring_in(scroller, idx); page_scroller_focus(scroller); - } + } while (0); + } static void _anim_start_cb(void *data, Evas_Object *scroller, void *event_info) { - Evas_Coord x; - Evas_Coord y; - Evas_Coord w; - Evas_Coord h; - Evas_Object *index; - Elm_Object_Item *idx_it; - - int idx; - int drag_start; - int previous_x; - int threshold; - - _D("Invoked"); - - drag_start = (int) evas_object_data_get(scroller, "drag_start"); - previous_x = (int) evas_object_data_get(scroller, "previous_x"); - index = evas_object_data_get(scroller, "index"); + _D("start the scroller(%p) animation", scroller); - ret_if(drag_start == 0); + int drag_start = (int) evas_object_data_get(scroller, "drag_start"); + if (drag_start == 0) return; evas_object_data_set(scroller, "drag_start", (void *) 0); +} - elm_scroller_region_get(scroller, &x, &y, &w, &h); - threshold = w * PAGE_SCROLL_SENSITIVE; - - idx_it = elm_index_selected_item_get(index, 0); - idx = (int) elm_object_item_data_get(idx_it); - - if (abs(previous_x - x) > threshold) { - if (x > previous_x) idx ++; - else if ((x < previous_x) && (idx != 0)) idx --; - } - ret_if(idx >= _count_pages(scroller) || idx < 0); - page_scroller_bring_in(scroller, idx); -} @@ -160,10 +146,7 @@ static void _drag_start_cb(void *data, Evas_Object *scroller, void *event_info) static void _drag_stop_cb(void *data, Evas_Object *scroller, void *event_info) { - Evas_Coord x; - Evas_Coord w; - Evas_Coord y; - Evas_Coord h; + Evas_Coord x, y, w, h; int previous_x; _D("Invoked"); @@ -173,6 +156,20 @@ static void _drag_stop_cb(void *data, Evas_Object *scroller, void *event_info) if (x == previous_x) { _D("Hold scroller (previous) %d (current) %d", previous_x, x); } + + /* page_scroller_focus & index_bring_in in _drag_stop_cb & _anim_stop_cb */ + do { + if (x % w) return; + + int cur_idx = page_scroller_get_current_page_no(scroller); + int idx = 0; + if (w) idx = x / w; + + if (cur_idx == idx) return; + + page_scroller_bring_in(scroller, idx); + page_scroller_focus(scroller); + } while (0); } @@ -830,6 +827,7 @@ HAPI Evas_Object *page_scroller_create(Evas_Object *tab, Evas_Object *index, pag width = menu_screen_get_root_width(); height = (int) ((double) PROP_PORTRAIT_HEIGHT * ((double) menu_screen_get_root_height())); elm_scroller_page_size_set(scroller, width, height); + elm_scroller_page_scroll_limit_set(scroller, 1, 1); evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);