Revert "elm focus manager - dont leak child lists when updating focus order"

This reverts commit bd6dcbb044.

This was not fixing the issue, just ducktaping over a bug in eolian, the
bug is now probebly fixed in eo / eolian.
This commit is contained in:
Marcel Hollerbach 2017-09-29 11:09:33 +02:00
parent 79e21e90e0
commit e5d1c1f195
8 changed files with 37 additions and 59 deletions

View File

@ -552,7 +552,6 @@ _efl_ui_focus_manager_calc_register_logical(Eo *obj, Efl_Ui_Focus_Manager_Calc_D
tmp = eina_list_clone(T(pnode).saved_order);
efl_ui_focus_manager_calc_update_order(obj, parent, tmp);
eina_list_free(tmp);
}
return EINA_TRUE;
@ -595,7 +594,6 @@ _efl_ui_focus_manager_calc_register(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd,
tmp = eina_list_clone(T(pnode).saved_order);
efl_ui_focus_manager_calc_update_order(obj, parent, tmp);
eina_list_free(tmp);
}
return EINA_TRUE;
@ -695,7 +693,7 @@ _efl_ui_focus_manager_calc_update_order(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data
return;
ELM_SAFE_FREE(T(pnode).saved_order, eina_list_free);
T(pnode).saved_order = eina_list_clone(order);
T(pnode).saved_order = order;
//get all nodes from the subset
EINA_LIST_FOREACH(order, n, o)
@ -728,14 +726,14 @@ _efl_ui_focus_manager_calc_update_children(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Man
Node *pnode;
Efl_Ui_Focus_Object *o;
Eina_Bool fail = EINA_FALSE;
Eina_List *node_order = NULL, *n;
Eina_List *node_order = NULL;
pnode = node_get(obj, pd, parent);
if (!pnode)
return EINA_FALSE;
//get all nodes from the subset
EINA_LIST_FOREACH(order, n, o)
EINA_LIST_FREE(order, o)
{
Node *tmp;

View File

@ -66,7 +66,7 @@ class Efl.Ui.Focus.Manager.Calc (Efl.Object, Efl.Ui.Focus.Manager) {
[[Give the list of children a different order.]]
params {
parent : Efl.Ui.Focus.Object @nonull; [[the parent to update]]
children : list<Efl.Ui.Focus.Object>; [[the list with the new order]]
children : own(list<Efl.Ui.Focus.Object>); [[the list with the new order]]
}
return : bool; [[$true if successful, $false otherwise]]
}

View File

@ -96,26 +96,24 @@ EFL_CALLBACKS_ARRAY_DEFINE(monitoring_callbacks,
static void
_focus_chain_update(Eo *obj, Elm_Fileselector_Data *pd)
{
Eo *fman = efl_ui_focus_user_manager_get(obj);
if (fman)
{
Eina_List *tmp = NULL;
Eina_List *tmp = NULL;
#define A(p) tmp = eina_list_append(tmp, p);
A(pd->up_button)
A(pd->home_button)
A(pd->search_entry)
A(pd->files_view)
A(pd->path_entry)
A(pd->name_entry)
A(pd->filter_hoversel)
A(pd->ok_button)
A(pd->cancel_button)
A(pd->up_button)
A(pd->home_button)
A(pd->search_entry)
A(pd->files_view)
A(pd->path_entry)
A(pd->name_entry)
A(pd->filter_hoversel)
A(pd->ok_button)
A(pd->cancel_button)
#undef A
efl_ui_focus_manager_calc_update_order(efl_ui_focus_user_manager_get(obj), obj, tmp);
eina_list_free(tmp);
}
efl_ui_focus_manager_calc_update_order(efl_ui_focus_user_manager_get(obj), obj, tmp);
}
static void

View File

@ -26,13 +26,9 @@ static void
_focus_order_flush(Eo *obj, Elm_Box_Data *pd EINA_UNUSED)
{
Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
if (wpd->focus.manager)
{
Eina_List *order = evas_object_box_children_get(wpd->resize_obj);
Eina_List *order = evas_object_box_children_get(wpd->resize_obj);
efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
eina_list_free(order);
}
efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
}
static void *

View File

@ -17,13 +17,9 @@ static void
_focus_order_flush(Eo *obj)
{
Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
if (wpd->focus.manager)
{
Eina_List *order = evas_object_grid_children_get(wpd->resize_obj);
Eina_List *order = evas_object_grid_children_get(wpd->resize_obj);
efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
eina_list_free(order);
}
efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
}

View File

@ -18,13 +18,9 @@ static void
_focus_order_flush(Eo *obj)
{
Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
if (wpd->focus.manager)
{
Eina_List *order = evas_object_table_children_get(wpd->resize_obj);
Eina_List *order = evas_object_table_children_get(wpd->resize_obj);
efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
eina_list_free(order);
}
efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
}
EOLIAN static Eina_Bool

View File

@ -102,29 +102,24 @@ _item_focus_eval(Elm_Toolbar_Item_Data *pd)
static void
_item_focus_eval_all(Elm_Toolbar *obj, Elm_Toolbar_Data *pd)
{
Elm_Toolbar_Item_Data *it;
Elm_Widget_Smart_Data *wpd;
Eina_List *order = NULL;
wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
if (wpd->focus.manager)
EINA_INLIST_FOREACH(pd->items, it)
{
Eina_List *order = NULL;
Elm_Toolbar_Item_Data *it;
EINA_INLIST_FOREACH(pd->items, it)
{
_item_focus_eval(it);
order = eina_list_append(order, EO_OBJ(it));
}
if (pd->more_item)
{
_item_focus_eval(pd->more_item);
order = eina_list_append(order, EO_OBJ(pd->more_item));
}
efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
eina_list_free(order);
_item_focus_eval(it);
order = eina_list_append(order, EO_OBJ(it));
}
if (pd->more_item)
{
_item_focus_eval(pd->more_item);
order = eina_list_append(order, EO_OBJ(pd->more_item));
}
efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
}
static int

View File

@ -320,7 +320,6 @@ START_TEST(order_check)
order = eina_list_append(order, child3);
order = eina_list_append(order, child1);
ck_assert_int_eq(efl_ui_focus_manager_calc_update_children(m, root, order), 1);
eina_list_free(order);
order = NULL;