fix the focus problem 08/45608/1 accepted/tizen/tv/20150810.043306 submit/tizen/20150810.010337
authorMinkyu Kang <mk7.kang@samsung.com>
Sat, 8 Aug 2015 08:54:56 +0000 (17:54 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Sat, 8 Aug 2015 08:54:56 +0000 (17:54 +0900)
Change-Id: I88bd4b429ef258057fc1bddb63d54235e8d3cfef
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
include/util/listmgr.h
include/view.h
src/layout/gallery.c
src/layout/movie.c
src/layout/music.c
src/util/listmgr.c
src/view/base.c

index 48f21fe..1f12061 100644 (file)
@@ -57,4 +57,6 @@ bool listmgr_update_play_info(struct listmgr *lmgr, app_media_info *info);
 bool listmgr_focus_content_list(struct listmgr *lmgr, int index, bool update);
 bool listmgr_focus_play_info(struct listmgr *lmgr);
 
+void listmgr_set_focus_state(struct listmgr *lmgr, Eina_Bool state);
+
 #endif /* __AIR_MEDIAHUB_LISTMGR_H__ */
index 30a8a47..ebb5a0e 100644 (file)
@@ -40,7 +40,7 @@ enum update_type {
        UPDATE_PLAYER,
        UPDATE_FAVORITE,
        UPDATE_RECENT,
-       UPDATE_RESUME,
+       UPDATE_FOCUS_STATE,
 };
 
 #endif /* __AIR_MEDIAHUB_VIEW_H__ */
index 28db18e..c6a4086 100644 (file)
@@ -450,9 +450,8 @@ static void _update(void *layout_data, int update_type, void *data)
                _update_content_list(priv);
                _recent_item_selected(priv, data);
                break;
-       case UPDATE_RESUME:
-               listmgr_focus_content_list(priv->listmgr,
-                               priv->cur_index, false);
+       case UPDATE_FOCUS_STATE:
+               listmgr_set_focus_state(priv->listmgr, EINA_FALSE);
                break;
        default:
                break;
index 28f49f4..b863c90 100644 (file)
@@ -699,9 +699,8 @@ static void _update(void *layout_data, int update_type, void *data)
                _update_content_list(priv);
                _recent_item_selected(priv, data);
                break;
-       case UPDATE_RESUME:
-               listmgr_focus_content_list(priv->listmgr,
-                               priv->cur_index, false);
+       case UPDATE_FOCUS_STATE:
+               listmgr_set_focus_state(priv->listmgr, EINA_FALSE);
                break;
        default:
                break;
index bbf637a..30ecc98 100644 (file)
@@ -628,9 +628,8 @@ static void _update(void *layout_data, int update_type, void *data)
                _update_content_list(priv);
                _recent_item_selected(priv, data);
                break;
-       case UPDATE_RESUME:
-               listmgr_focus_content_list(priv->listmgr,
-                               priv->cur_index, false);
+       case UPDATE_FOCUS_STATE:
+               listmgr_set_focus_state(priv->listmgr, EINA_FALSE);
                break;
        default:
                break;
index 84eb251..0c4269b 100644 (file)
@@ -50,7 +50,7 @@ struct listmgr {
        struct listmgr_data *data;
 
        Eina_Bool show_play_info;
-       Eina_Bool scr_focus;
+       Eina_Bool focus_state;
 };
 
 static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
@@ -66,9 +66,9 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
        switch (id) {
        case LISTMGR_INDEX:
                if (!strcmp(ev->keyname, KEY_BACK) ||
-                       !strcmp(ev->keyname, KEY_BACK_REMOTE))
+                       !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
                        elm_object_focus_next(obj, ELM_FOCUS_UP);
-               else if (!strcmp(ev->keyname, KEY_DOWN)) {
+               else if (!strcmp(ev->keyname, KEY_DOWN)) {
                        Evas_Object *grid;
                        Elm_Object_Item *it;
 
@@ -109,7 +109,7 @@ static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
        case LISTMGR_INDEX:
        case LISTMGR_PLAY_INFO:
                if (!elm_object_focus_get(obj)) {
-                       lmgr->scr_focus = EINA_FALSE;
+                       lmgr->focus_state = EINA_TRUE;
                        elm_object_focus_set(obj, EINA_TRUE);
                }
 
@@ -122,9 +122,8 @@ static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
                        return;
 
                if (!elm_object_item_focus_get(it)) {
-                       lmgr->scr_focus = EINA_FALSE;
+                       lmgr->focus_state = EINA_TRUE;
                        elm_object_item_focus_set(it, EINA_TRUE);
-                       lmgr->scr_focus = EINA_TRUE;
                }
 
                break;
@@ -160,7 +159,7 @@ static void _focused_cb(int id, void *data, Evas_Object *obj,
 
        switch (id) {
        case LISTMGR_SCROLLER:
-               if (!lmgr->scr_focus)
+               if (lmgr->focus_state)
                        break;
 
                btn = elm_object_part_content_get(lmgr->focused,
@@ -170,15 +169,14 @@ static void _focused_cb(int id, void *data, Evas_Object *obj,
                        return;
                }
 
+               lmgr->focus_state = EINA_TRUE;
                elm_object_focus_set(btn, EINA_TRUE);
 
                break;
        case LISTMGR_INDEX:
        case LISTMGR_PLAY_INFO:
        case LISTMGR_GRID:
-               lmgr->focused =  elm_object_parent_widget_get(obj);
-               lmgr->scr_focus = EINA_TRUE;
-
+               lmgr->focused = elm_object_parent_widget_get(obj);
                elm_object_signal_emit(lmgr->data->menu_btn, SIG_BTN_SELECTED,
                                        SIG_SOURCE_SRC);
                break;
@@ -389,12 +387,22 @@ bool _focus_to_content(struct listmgr *lmgr, Evas_Object *base)
                return false;
        }
 
-       lmgr->scr_focus = EINA_FALSE;
+       lmgr->focus_state = EINA_TRUE;
        elm_object_focus_set(content, EINA_TRUE);
 
        return true;
 }
 
+void listmgr_set_focus_state(struct listmgr *lmgr, Eina_Bool state)
+{
+       if (!lmgr) {
+               _ERR("failed to get listmgr");
+               return;
+       }
+
+       lmgr->focus_state = state;
+}
+
 bool listmgr_focus_play_info(struct listmgr *lmgr)
 {
        if (!lmgr) {
@@ -456,7 +464,7 @@ bool listmgr_focus_content_list(struct listmgr *lmgr, int index, bool update)
 
        elm_gengrid_item_bring_in(it, ELM_GENGRID_ITEM_SCROLLTO_MIDDLE);
 
-       lmgr->scr_focus = EINA_FALSE;
+       lmgr->focus_state = EINA_TRUE;
        elm_object_item_focus_set(it, EINA_TRUE);
 
        return true;
@@ -620,9 +628,9 @@ struct listmgr *listmgr_create(Evas_Object *base, void *data)
 
        lmgr->base = base;
        lmgr->gmgr = gmgr;
-       lmgr->data = (struct listmgr_data *)data;
+       lmgr->data = data;
        lmgr->show_play_info = EINA_FALSE;
-       lmgr->scr_focus = EINA_TRUE;
+       lmgr->focus_state = EINA_FALSE;
 
        return lmgr;
 }
index 928dde1..6f18cdd 100644 (file)
@@ -124,13 +124,6 @@ static void _focused_cb(int id, void *data, Evas_Object *obj,
 
        priv = data;
 
-       if (priv->focused_btn == obj)
-               return;
-
-       if (priv->focused_btn)
-               elm_object_signal_emit(priv->focused_btn, SIG_BTN_UNSELECTED,
-                                       SIG_SOURCE_SRC);
-
        for (i = 0; i < E_LAYOUT_MAX; i++) {
                if (priv->btn[i] == obj)
                        break;
@@ -139,6 +132,16 @@ static void _focused_cb(int id, void *data, Evas_Object *obj,
        if (i == E_LAYOUT_MAX)
                return;
 
+       layoutmgr_update_layout(priv->lmgr, g_menu_item[i].layout_id,
+                       UPDATE_FOCUS_STATE, NULL);
+
+       if (priv->focused_btn == obj)
+               return;
+
+       if (priv->focused_btn)
+               elm_object_signal_emit(priv->focused_btn, SIG_BTN_UNSELECTED,
+                                       SIG_SOURCE_SRC);
+
        _set_current_layout(priv, i);
 
        layoutmgr_update_layout(priv->lmgr, g_menu_item[i].layout_id,
@@ -594,22 +597,6 @@ static void _pause(void *view_data)
        viewmgr_update_view(VIEW_MPLAYER, UPDATE_PLAYER, NULL);
 }
 
-static void _resume(void *view_data)
-{
-       struct _priv *priv;
-
-       if (!view_data) {
-               _ERR("failed to get view data");
-               return;
-       }
-
-       priv = view_data;
-
-       layoutmgr_update_layout(priv->lmgr,
-                       g_menu_item[priv->current_layout].layout_id,
-                       UPDATE_RESUME, NULL);
-}
-
 static void _destroy(void *view_data)
 {
        struct _priv *priv;
@@ -648,7 +635,6 @@ static view_class _vclass = {
        .hide = _hide,
        .update = _update,
        .pause = _pause,
-       .resume = _resume,
        .destroy = _destroy,
 };