bu5hm4n pushed a commit to branch master.

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

commit d701597eb9b164bb7cd55fc4ca38175f91ccf72a
Author: Marcel Hollerbach <mar...@osg.samsung.com>
Date:   Tue Oct 17 19:35:59 2017 +0200

    efl_ui_focus_manager_calc: move unfocusing the last element into its own
    function
---
 src/lib/elementary/efl_ui_focus_manager_calc.c | 32 +++++++++++++++-----------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c 
b/src/lib/elementary/efl_ui_focus_manager_calc.c
index 6921de5d8d..3312aebd2d 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -209,7 +209,20 @@ node_item_free(Node *item)
 
    free(item);
 }
+//FOCUS-STACK HELPERS
 
+static void
+_focus_stack_unfocus_last(Efl_Ui_Focus_Manager_Calc_Data *pd)
+{
+   Node *n;
+
+   n = eina_list_last_data_get(pd->focus_stack);
+
+   pd->focus_stack = eina_list_remove(pd->focus_stack, n);
+
+   if (n)
+     efl_ui_focus_object_focus_set(n->focusable, EINA_FALSE);
+}
 
 //CALCULATING STUFF
 
@@ -1238,11 +1251,12 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_request_move(Eo *obj EINA_UNUSED
      }
 }
 
+
+
 EOLIAN static void
 _efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, 
Efl_Ui_Focus_Manager_Calc_Data *pd, Efl_Ui_Focus_Object *focus)
 {
    Node *node;
-   Node *old_focus;
    Efl_Ui_Focus_Manager *redirect_manager;
    Eo *focusable;
    Node_Type type;
@@ -1313,8 +1327,8 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_
    if (node->type == NODE_TYPE_NORMAL)
      {
         Eo *node_focusable;
-        //check if this is already the focused object
-        old_focus = eina_list_last_data_get(pd->focus_stack);
+
+        _focus_stack_unfocus_last(pd);
 
         //remove the object from the list and add it again
         pd->focus_stack = eina_list_remove(pd->focus_stack, node);
@@ -1324,7 +1338,6 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_
         node_focusable = node->focusable;
 
         //populate the new change
-        if (old_focus) efl_ui_focus_object_focus_set(old_focus->focusable, 
EINA_FALSE);
         efl_ui_focus_object_focus_set(node->focusable, EINA_TRUE);
         efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, 
node_focusable);
         node = NULL;
@@ -1567,12 +1580,9 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_logical_end(Eo *obj EINA_UNUSED,
 EOLIAN static void
 _efl_ui_focus_manager_calc_efl_ui_focus_manager_reset_history(Eo *obj 
EINA_UNUSED, Efl_Ui_Focus_Manager_Calc_Data *pd)
 {
-  Node *last;
-
   if (!pd->focus_stack) return;
 
-  last = eina_list_last_data_get(pd->focus_stack);
-  efl_ui_focus_object_focus_set(last->focusable, EINA_FALSE);
+  _focus_stack_unfocus_last(pd);
 
   pd->focus_stack = eina_list_free(pd->focus_stack);
 }
@@ -1583,11 +1593,7 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_pop_history_stack(Eo *obj EINA_U
   Node *last;
 
   if (!pd->focus_stack) return;
-  //remove last element
-  last = eina_list_last_data_get(pd->focus_stack);
-  pd->focus_stack =  eina_list_remove(pd->focus_stack, last);
-  //unfocus it
-  efl_ui_focus_object_focus_set(last->focusable, EINA_FALSE);
+  _focus_stack_unfocus_last(pd);
 
   //get now the highest, and unfocus that!
   last = eina_list_last_data_get(pd->focus_stack);

-- 


Reply via email to