Fixed the focus bug between grid and sortbtn 47/44547/1
authorHyojung Jo <hj903.jo@samsung.com>
Thu, 23 Jul 2015 06:49:48 +0000 (15:49 +0900)
committerHyojung Jo <hj903.jo@samsung.com>
Thu, 23 Jul 2015 06:49:48 +0000 (15:49 +0900)
Change-Id: I99232f8efdca43c55330efb1c6d487649a709fbf
Signed-off-by: Hyojung Jo <hj903.jo@samsung.com>
src/view/view_base.c

index c77df8d..c8cf29f 100644 (file)
@@ -118,27 +118,16 @@ static void _menu_focused_cb(int id, void *data, Evas_Object *obj,
 static void _menu_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev)
 {
-       struct _priv *priv;
-
-       if (!data || !obj || !ev) {
+       if (!obj || !ev) {
                _ERR("Invalid argument.");
                return;
        }
-       priv = data;
 
        switch (id) {
        case MENU_MYAPPS:
-               if (!strcmp(ev->key, KEY_ENTER) || !strcmp(ev->key, KEY_DOWN)) {
-                       elm_object_focus_set(priv->grid, EINA_TRUE);
-                       elm_object_item_focus_set(priv->cur_grid_item,
-                                       EINA_TRUE);
-               } else if (!strcmp(ev->key, KEY_BACK)) {
-                       ui_app_exit();
-               }
-
-               break;
-
        case MENU_APPSTORE:
+               if (!strcmp(ev->key, KEY_BACK))
+                       ui_app_exit();
                break;
 
        default:
@@ -146,6 +135,21 @@ static void _menu_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
        }
 }
 
+static void _menu_key_up_cb(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Key_Up *ev)
+{
+       struct _priv *priv;
+
+       if (!data || !ev) {
+               _ERR("Invalid argument.");
+               return;
+       }
+       priv = data;
+
+       if (id == MENU_MYAPPS && !strcmp(ev->key, KEY_DOWN))
+               elm_object_focus_set(priv->grid, EINA_TRUE);
+}
+
 static void _destroy_sort_ctxpopup(struct _priv *priv)
 {
        if (!priv || !priv->sort_popup) {
@@ -429,6 +433,9 @@ static void _grid_focused_cb(int id, void *data, Evas_Object *obj,
        priv = data;
 
        elm_object_signal_emit(priv->focused_menu, SIG_SELECTED, "");
+
+       if (priv->cur_grid_item)
+               elm_object_item_focus_set(priv->cur_grid_item, EINA_TRUE);
 }
 
 static void _grid_item_focused_cb(void *data, Elm_Object_Item *it,
@@ -534,7 +541,8 @@ static input_handler _menu_input_handler = {
        .mouse_move = _mouse_move_cb,
        .clicked = _menu_clicked_cb,
        .focused = _menu_focused_cb,
-       .key_down = _menu_key_down_cb
+       .key_down = _menu_key_down_cb,
+       .key_up = _menu_key_up_cb
        /* It will be implemented later. */
 };
 
@@ -593,6 +601,7 @@ static bool _draw_top_area(struct _priv *priv)
                        priv->menu_btn[MENU_COUNT - 1], ELM_FOCUS_LEFT);
        elm_object_focus_next_object_set(priv->menu_btn[MENU_COUNT - 1],
                        priv->menu_btn[0], ELM_FOCUS_RIGHT);
+       elm_object_focus_next_object_set(priv->menu_btn[0], priv->menu_btn[0], ELM_FOCUS_DOWN);
 
        elm_object_focus_set(priv->menu_btn[0], EINA_TRUE);
 
@@ -623,6 +632,7 @@ static bool _draw_bottom_area(struct _priv *priv)
        elm_object_focus_next_object_set(btn, btn, ELM_FOCUS_RIGHT);
        elm_object_focus_next_object_set(btn, btn, ELM_FOCUS_LEFT);
        elm_object_focus_next_object_set(btn, priv->grid, ELM_FOCUS_UP);
+       elm_object_focus_next_object_set(priv->grid, btn, ELM_FOCUS_DOWN);
 
        priv->sort_btn = btn;