}
//FOCUS-STACK HELPERS
-static void
+static Efl_Ui_Focus_Object*
_focus_stack_unfocus_last(Efl_Ui_Focus_Manager_Calc_Data *pd)
{
+ Efl_Ui_Focus_Object *focusable = NULL;
Node *n;
n = eina_list_last_data_get(pd->focus_stack);
+ if (n)
+ focusable = n->focusable;
+
pd->focus_stack = eina_list_remove(pd->focus_stack, n);
if (n)
efl_ui_focus_object_focus_set(n->focusable, EINA_FALSE);
+
+ return focusable;
}
static Node*
type = node->type;
focusable = node->focusable;
- if (pd->focus_stack)
- last_focusable = ((Node*)eina_list_last_data_get(pd->focus_stack))->focusable;
-
- _focus_stack_unfocus_last(pd);
+ last_focusable = _focus_stack_unfocus_last(pd);
if (node->type == NODE_TYPE_NORMAL)
{
if (!pd->focus_stack) return;
- last_focusable = ((Node*)eina_list_last_data_get(pd->focus_stack))->focusable;
-
- _focus_stack_unfocus_last(pd);
+ last_focusable = _focus_stack_unfocus_last(pd);
pd->focus_stack = eina_list_free(pd->focus_stack);
Node *last;
if (!pd->focus_stack) return;
- _focus_stack_unfocus_last(pd);
- last_focusable = ((Node*)eina_list_last_data_get(pd->focus_stack))->focusable;
+ last_focusable = _focus_stack_unfocus_last(pd);
//get now the highest, and unfocus that!
last = eina_list_last_data_get(pd->focus_stack);