bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=f720115f082f32960baf6c01a517eaa398f3ef4d

commit f720115f082f32960baf6c01a517eaa398f3ef4d
Author: Marcel Hollerbach <mar...@osg.samsung.com>
Date:   Thu Oct 19 13:47:15 2017 +0200

    elm_widget: update parent instead of unregister for the case of parent
    change
    
    This means we maintain the focus state over a parent change
---
 src/lib/elementary/elm_widget.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 66995c9a93..cc872e0c16 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -355,7 +355,6 @@ _elm_widget_focus_state_apply(Eo *obj, 
Elm_Widget_Smart_Data *pd EINA_UNUSED, El
 
    if (//check if we have changed the manager
        (current_state.manager != configured_state->manager) ||
-       (current_state.parent != configured_state->parent) ||
        //check if we are already registered but in a different state
        (current_state.logical != configured_state->logical))
      {
@@ -364,6 +363,12 @@ _elm_widget_focus_state_apply(Eo *obj, 
Elm_Widget_Smart_Data *pd EINA_UNUSED, El
         registered = EINA_FALSE;
      }
 
+   //the parent may has changed
+   if (current_state.parent != configured_state->parent && registered)
+     {
+        return efl_ui_focus_manager_calc_update_parent(current_state.manager, 
obj, configured_state->parent);
+     }
+
    if (!registered)
      {
         if (configured_state->logical)

-- 


Reply via email to