N_SE-45660 : Focus the first item of the other page when user moves pages by a keyboard.
authorJin Yoon <jinny.yoon@samsung.com>
Wed, 10 Jul 2013 13:54:04 +0000 (22:54 +0900)
committerJin Yoon <jinny.yoon@samsung.com>
Wed, 10 Jul 2013 13:54:57 +0000 (22:54 +0900)
data/org.tizen.menu-screen.xml.in
include/page_scroller.h
packaging/org.tizen.menu-screen.spec
src/key.c
src/page_scroller.c

index 921afd48d917fc0d8786be36963430cbea7f3ced..5b0d81dec27b3050f3009760e80a3f8243fd0be5 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="@PACKAGE_NAME@" version="1.1.12" install-location="internal-only">
+<manifest xmlns="http://tizen.org/ns/packages" package="@PACKAGE_NAME@" version="1.1.13" install-location="internal-only">
        <label>Simple Menu-screen</label>
        <author email="jinny.yoon@samsung.com" href="www.samsung.com">Jin Yoon</author>
        <author email="yjoo93.park@samsung.com" href="www.samsung.com">Youngjoo Park</author>
index c482831c4bff32c288143ab8b3cd48ea03883595..282a5f206471a44fe7d9282950da064f1f36fb9e 100644 (file)
@@ -51,6 +51,7 @@ extern void page_scroller_unedit(Evas_Object *scroller);
 extern bool page_scroller_is_edited(Evas_Object *scroller);
 
 extern void page_scroller_focus(Evas_Object *scroller);
+extern void page_scroller_focus_into_vector(Evas_Object *scroller, int vector);
 
 #endif //__MENU_SCREEN_PAGE_SCROLLER_H__
 
index 848f5992cb2fc1439ee8f9623bdf87d0a9defa68..489af8891aec130db1c0f9cd7ab9a188ba076aa9 100644 (file)
@@ -16,7 +16,7 @@
 
 Name:       org.tizen.menu-screen
 Summary:    An utility library of the menu screen
-Version:    1.1.12
+Version:    1.1.13
 Release:    1.1
 Group:      TO_BE/FILLED_IN
 License:    Flora Software License
index 007a0a377752bec313f9956de03ded731737f97e..5b2462811a44f52352591e038a10851dd9830fc5 100644 (file)
--- a/src/key.c
+++ b/src/key.c
@@ -78,6 +78,7 @@ static Eina_Bool _key_release_cb(void *data, int type, void *event)
                Evas_Object *scroller = evas_object_data_get(all_apps, "scroller");
                break_if(NULL == scroller);
 
+               int left = 0;
                if (!strcmp(ev->keyname, KEY_SELECT) || !strcmp(ev->keyname, KEY_BACK)) {
                        if (popup_exist()) {
                                popup_destroy_all();
@@ -87,16 +88,22 @@ static Eina_Bool _key_release_cb(void *data, int type, void *event)
                        if (all_apps_layout_is_edited(all_apps)) {
                                all_apps_layout_unedit(all_apps);
                        }
-               } else if (!strcmp(ev->keyname, KEY_LEFT) || !strcmp(ev->keyname, KEY_RIGHT)) {
-
+               } else if ((left = !strcmp(ev->keyname, KEY_LEFT)) ||
+                                       !strcmp(ev->keyname, KEY_RIGHT))
+               {
                        int cur_idx = page_scroller_get_current_page_no(scroller);
-
                        int idx = 0, x = 0, w = 0;
                        elm_scroller_region_get(scroller, &x, NULL, &w, NULL);
 
                        if (w) idx = x / w;
                        if (cur_idx != idx) {
                                page_scroller_bring_in(scroller, idx);
+                               break;
+                       }
+
+                       int vector = left ? -1 : 1;
+                       if (x % w) {
+                               page_scroller_focus_into_vector(scroller, vector);
                        }
                }
        } while (0);
index 2882abd8335553477d112b378407619130b222d8..5cf2f721353c363eb0ce4ba8f989516bae3b2c80 100644 (file)
@@ -1280,4 +1280,32 @@ HAPI void page_scroller_focus(Evas_Object *scroller)
 
 
 
+HAPI void page_scroller_focus_into_vector(Evas_Object *scroller, int vector)
+{
+       int idx = 0;
+       idx = page_scroller_get_current_page_no(scroller);
+       idx += vector;
+
+       ret_if(0 > idx);
+
+       Evas_Object *page = NULL;
+       page = page_scroller_get_page_at(scroller, (unsigned int) idx);
+       ret_if(NULL == page);
+
+       Evas_Object *item = NULL;
+       item = page_get_item_at(page, 0);
+       ret_if(NULL == item);
+
+       Evas_Object *focus_button = NULL;
+       focus_button = elm_object_part_content_get(item, "focus");
+       ret_if(NULL == focus_button);
+
+       _D("Focus set scroller(%p), page:%d, item:%s", scroller, idx, item_get_name(item));
+       elm_object_focus_set(focus_button, EINA_TRUE);
+
+       page_scroller_bring_in(scroller, idx);
+}
+
+
+
 // End of a file