From: Anil Kumar Nahak Date: Thu, 29 May 2014 02:35:46 +0000 (+0900) Subject: fileselector: Added focus cycle feature. X-Git-Tag: upstream/1.10.0+218+gee3f0b7~201 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1d38e0b97fee7ae2b3851766ab77d475e2e44284;p=platform%2Fupstream%2Felementary.git fileselector: Added focus cycle feature. Summary: Previously there was no focus_direction & focus_next. These functions are added in filesector winset for currect focus movement inside the winset. Test Plan: elementary_test->"fileselector" Reviewers: raster, seoz, nirajkr, singh.amitesh Differential Revision: https://phab.enlightenment.org/D913 --- diff --git a/src/bin/test_fileselector.c b/src/bin/test_fileselector.c index a410e92..b32cd87 100644 --- a/src/bin/test_fileselector.c +++ b/src/bin/test_fileselector.c @@ -529,6 +529,7 @@ test_fileselector(void *data EINA_UNUSED, win = elm_win_util_standard_add("fileselector", "File Selector"); elm_win_autodel_set(win, EINA_TRUE); + elm_win_focus_highlight_enabled_set(win, EINA_TRUE); box = elm_box_add(win); elm_box_horizontal_set(box, EINA_TRUE); diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c index 686369d..584e7b9 100644 --- a/src/lib/elc_fileselector.c +++ b/src/lib/elc_fileselector.c @@ -2152,13 +2152,58 @@ _elm_fileselector_elm_interface_fileselector_sort_method_get(Eo *obj EINA_UNUSED EOLIAN static Eina_Bool _elm_fileselector_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *sd EINA_UNUSED) { - return EINA_FALSE; + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_elm_fileselector_elm_widget_focus_next(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *sd, Elm_Focus_Direction dir, Evas_Object **next) +{ + Eina_List *items = NULL; + + if (sd->up_button) items = eina_list_append(items, sd->up_button); + if (sd->home_button) items = eina_list_append(items, sd->home_button); + if (sd->files_view) items = eina_list_append(items, sd->files_view); + if (sd->path_entry) items = eina_list_append(items, sd->path_entry); + if (sd->name_entry) items = eina_list_append(items, sd->name_entry); + if (sd->cancel_button) items = eina_list_append(items, sd->cancel_button); + if (sd->ok_button) items = eina_list_append(items, sd->ok_button); + + if (_elm_config->access_mode) + return elm_widget_focus_list_next_get(obj, items, eina_list_data_get, dir, next); + + if (!elm_widget_focus_list_next_get(obj, items, eina_list_data_get, dir, next)) + *next = (Evas_Object *)obj; + + eina_list_free(items); + + return EINA_TRUE; } EOLIAN static Eina_Bool _elm_fileselector_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *sd EINA_UNUSED) { - return EINA_FALSE; + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_elm_fileselector_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *sd, const Evas_Object *base, double degree, Evas_Object **direction, double *weight) +{ + Eina_List *items = NULL; + + if (sd->up_button) items = eina_list_append(items, sd->up_button); + if (sd->home_button) items = eina_list_append(items, sd->home_button); + if (sd->files_view) items = eina_list_append(items, sd->files_view); + if (sd->path_entry) items = eina_list_append(items, sd->path_entry); + if (sd->name_entry) items = eina_list_append(items, sd->name_entry); + if (sd->cancel_button) items = eina_list_append(items, sd->cancel_button); + if (sd->ok_button) items = eina_list_append(items, sd->ok_button); + + elm_widget_focus_list_direction_get + (obj, base, items, eina_list_data_get, degree, direction, weight); + + eina_list_free(items); + + return EINA_TRUE; } EOLIAN static Eina_Bool diff --git a/src/lib/elc_fileselector.eo b/src/lib/elc_fileselector.eo index 65878a3..656089e 100644 --- a/src/lib/elc_fileselector.eo +++ b/src/lib/elc_fileselector.eo @@ -39,7 +39,9 @@ class Elm_Fileselector (Elm_Layout, Elm_Interface_Fileselector) Eo_Base::constructor; Evas_Smart::add; Evas_Smart::del; + Elm_Widget::focus_next; Elm_Widget::focus_direction_manager_is; + Elm_Widget::focus_direction; Elm_Widget::event; Elm_Widget::theme_apply; Elm_Widget::focus_next_manager_is;