summaryrefslogtreecommitdiff
path: root/src/lib/elementary/efl_ui_win.c
diff options
context:
space:
mode:
authorMarcel Hollerbach <marcel-hollerbach@t-online.de>2017-08-30 22:33:04 +0200
committerMarcel Hollerbach <marcel-hollerbach@t-online.de>2017-08-30 22:39:52 +0200
commitea5b0bdfdeab75db460d4d9ccdb49b8874bcce7e (patch)
treef8ac06539934530c6dcab5b6d6d2193f900ec2db /src/lib/elementary/efl_ui_win.c
parent57d5b5921e8a4a05f4a1b468f1cfed74d28b95f9 (diff)
efl_ui_focus_manager: make logical_end work better
it turns out that we should also repsect logical elements that are having a redirect_manager, since they are more at the "end" then a potential regular node. The user now needs to handle the logical_end call on this manager, or handle at all what he wants to do with this information. efl_ui_win now handles it in the way that it just focuses that logical node, (which results in the redirect manager beeing set, then calling again logical_end on that manager. Repeating this until we have finally found a regular node that does fit out needs.
Diffstat (limited to '')
-rw-r--r--src/lib/elementary/efl_ui_win.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index b5a64ddd21..1b2bb361aa 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -1755,10 +1755,15 @@ _key_action_move(Evas_Object *obj, const char *params)
1755 1755
1756 if (!o && focus_dir == EFL_UI_FOCUS_DIRECTION_PREV) 1756 if (!o && focus_dir == EFL_UI_FOCUS_DIRECTION_PREV)
1757 { 1757 {
1758 Efl_Ui_Focus_Object *last; 1758 Efl_Ui_Focus_Manager_Logical_End_Detail last;
1759 Efl_Ui_Focus_Manager *rec_manager = obj;
1759 1760
1760 last = efl_ui_focus_manager_logical_end(obj); 1761 do {
1761 efl_ui_focus_manager_focus_set(obj, last); 1762 last = efl_ui_focus_manager_logical_end(rec_manager);
1763 efl_ui_focus_manager_focus_set(obj, last.element);
1764
1765 rec_manager = efl_ui_focus_manager_redirect_get(rec_manager);
1766 } while (!last.is_regular_end);
1762 } 1767 }
1763 1768
1764 return EINA_TRUE; 1769 return EINA_TRUE;