aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Hollerbach <marcel@osg.samsung.com>2018-03-15 15:02:57 +0100
committerMarcel Hollerbach <marcel@osg.samsung.com>2018-03-15 15:39:12 +0100
commitc8ba7a070fc0ee9aef514fe48aca02153587729e (patch)
treea7db8ddc030ba3daf05ad9e18770c3dbf74dec21
parentefl_ui_focus_manager_calc: do not set focus on a deletion manager (diff)
downloadefl-c8ba7a070fc0ee9aef514fe48aca02153587729e.tar.gz
efl_ui_focus_manager_calc: set redirect before setting focus
settings the redirect might result in unfocus calls, that might unset evas_object_focus on a object that might be registered in two managers due to border linking. This fixes mysterical disapearing focus.
-rw-r--r--src/lib/elementary/efl_ui_focus_manager_calc.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c
index 403f8cf265..27799e51c1 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -1605,7 +1605,12 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_manager_focus_set(Eo *obj, Efl_U
}
}
-
+ //now check if this is also a listener object
+ if (redirect_manager)
+ {
+ //set the redirect
+ efl_ui_focus_manager_redirect_set(obj, redirect_manager);
+ }
/*
Only emit those signals if we are already at the top of the focus stack.
@@ -1620,13 +1625,6 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_manager_focus_set(Eo *obj, Efl_U
efl_ui_focus_object_focus_set(new_focusable, EINA_TRUE);
efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, last_focusable);
}
-
- //now check if this is also a listener object
- if (redirect_manager)
- {
- //set the redirect
- efl_ui_focus_manager_redirect_set(obj, redirect_manager);
- }
}
EOLIAN static void