bu5hm4n pushed a commit to branch master.

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

commit 56beb861e83cbc830c82db7473e0a88461e2e213
Author: Marcel Hollerbach <[email protected]>
Date:   Sun Feb 11 18:04:06 2018 +0000

    efl_ui_win: move inital focus set to focus_in handler
    
    it seems that focus changes to FOCUS=FALSE are causing autodel windows
    to kill themself, so we only set the focus on the window if the window
    manager calls focus in AND we dont have anything to focus and nothing is
    focused yet.
---
 src/lib/elementary/efl_ui_win.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index ebc7d8979b..1a8cd6ad93 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -1258,6 +1258,17 @@ _elm_win_focus_in(Ecore_Evas *ee)
    /* else if (sd->img_obj) */
    /*   { */
    /*   } */
+   if (!efl_ui_focus_manager_focus_get(sd->obj) && 
!efl_ui_focus_manager_redirect_get(sd->obj))
+     {
+        Efl_Ui_Focus_Object *child;
+
+        child = efl_ui_focus_manager_request_subchild(sd->obj, sd->obj);
+
+        if (child)
+          efl_ui_focus_manager_focus_set(sd->obj, sd->obj);
+        else
+          evas_object_focus_set(sd->obj, EINA_TRUE);
+     }
 }
 
 static void
@@ -5105,8 +5116,6 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, 
const char *name, Efl_U
    efl_constructor(efl_super(obj, MY_CLASS));
    evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
 
-   evas_object_focus_set(obj, EINA_TRUE);
-
    if (getenv("ELM_FIRST_FRAME"))
      evas_event_callback_add(ecore_evas_get(tmp_sd.ee), 
EVAS_CALLBACK_RENDER_POST,
                              _elm_win_first_frame_do, 
getenv("ELM_FIRST_FRAME"));

-- 


Reply via email to