diff --git a/legacy/elementary/ChangeLog b/legacy/elementary/ChangeLog index a6e9c3d24c..bcd73fe5d6 100644 --- a/legacy/elementary/ChangeLog +++ b/legacy/elementary/ChangeLog @@ -1140,3 +1140,4 @@ 2013-03-11 WooHyun Jung * Fixed a bug that naviframe's focus_next didn't work after changing evenry item to elm_layout. + * Naviframe is now supproting . diff --git a/legacy/elementary/NEWS b/legacy/elementary/NEWS index 65dfc2ec0c..0585e87773 100644 --- a/legacy/elementary/NEWS +++ b/legacy/elementary/NEWS @@ -83,6 +83,7 @@ Improvements: * Improve support on 64bits system. * Improve gengrid item append performance. * Naviframe works for H/W Back key event. + * Naviframe is now supproting focus_direction. Fixes: diff --git a/legacy/elementary/src/lib/elc_naviframe.c b/legacy/elementary/src/lib/elc_naviframe.c index 8d73b6c986..537f7769b3 100644 --- a/legacy/elementary/src/lib/elc_naviframe.c +++ b/legacy/elementary/src/lib/elc_naviframe.c @@ -1230,6 +1230,42 @@ _elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list) eina_list_free(l); } +static void +_elm_naviframe_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) +{ + Eina_Bool *ret = va_arg(*list, Eina_Bool *); + *ret = EINA_TRUE; +} + +static void +_elm_naviframe_smart_focus_direction(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) +{ + Evas_Object *base = va_arg(*list, Evas_Object *); + double degree = va_arg(*list, double); + Evas_Object **direction = va_arg(*list, Evas_Object **); + double *weight = va_arg(*list, double *); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); + if (ret) *ret = EINA_FALSE; + Eina_Bool int_ret; + + Eina_List *l = NULL; + Elm_Naviframe_Item *top_it; + void *(*list_data_get)(const Eina_List *list); + + top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj); + if (!top_it) return; + + list_data_get = eina_list_data_get; + + l = eina_list_append(l, VIEW(top_it)); + + int_ret = elm_widget_focus_list_direction_get + (obj, base, l, list_data_get, degree, direction, weight); + + if (ret) *ret = int_ret; + eina_list_free(l); +} + static void _elm_naviframe_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) { @@ -1996,6 +2032,9 @@ _class_constructor(Eo_Class *klass) EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_naviframe_smart_focus_next_manager_is), EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT), _elm_naviframe_smart_focus_next), + EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_naviframe_smart_focus_direction_manager_is), + EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_DIRECTION), _elm_naviframe_smart_focus_direction), + EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME), _elm_naviframe_smart_theme), EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_ACCESS), _elm_naviframe_smart_access), EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_EVENT), _elm_naviframe_smart_event),