forked from enlightenment/efl
elementary: properly shutdown and cleanup Efl.Ui.Position_Manager.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D9946
This commit is contained in:
parent
3656996df4
commit
e448110439
|
@ -766,7 +766,16 @@ _efl_ui_position_manager_grid_efl_ui_position_manager_entity_version(Eo *obj EIN
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_ui_position_manager_grid_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
|
_efl_ui_position_manager_grid_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
|
||||||
{
|
{
|
||||||
|
// Cleanup cache first
|
||||||
_group_cache_invalidate(obj, pd);
|
_group_cache_invalidate(obj, pd);
|
||||||
|
|
||||||
|
// Clean callback if they were set
|
||||||
|
if (pd->callbacks.object.free_cb)
|
||||||
|
pd->callbacks.object.free_cb(pd->callbacks.object.data);
|
||||||
|
if (pd->callbacks.size.free_cb)
|
||||||
|
pd->callbacks.size.free_cb(pd->callbacks.size.data);
|
||||||
|
|
||||||
|
// Set them
|
||||||
pd->callbacks.object.data = obj_access_data;
|
pd->callbacks.object.data = obj_access_data;
|
||||||
pd->callbacks.object.access = obj_access;
|
pd->callbacks.object.access = obj_access;
|
||||||
pd->callbacks.object.free_cb = obj_access_free_cb;
|
pd->callbacks.object.free_cb = obj_access_free_cb;
|
||||||
|
@ -779,6 +788,15 @@ _efl_ui_position_manager_grid_efl_ui_position_manager_data_access_v1_data_access
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN static void
|
||||||
|
_efl_ui_position_manager_grid_efl_object_invalidate(Eo *obj,
|
||||||
|
Efl_Ui_Position_Manager_Grid_Data *pd EINA_UNUSED)
|
||||||
|
{
|
||||||
|
efl_ui_position_manager_data_access_v1_data_access_set(obj, NULL, NULL, NULL, NULL, NULL, NULL, 0);
|
||||||
|
|
||||||
|
efl_invalidate(efl_super(obj, EFL_UI_POSITION_MANAGER_GRID_CLASS));
|
||||||
|
}
|
||||||
|
|
||||||
EOLIAN static Efl_Object*
|
EOLIAN static Efl_Object*
|
||||||
_efl_ui_position_manager_grid_efl_object_finalize(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd)
|
_efl_ui_position_manager_grid_efl_object_finalize(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,5 +18,6 @@ class @beta Efl.Ui.Position_Manager.Grid extends Efl.Object
|
||||||
Efl.Ui.Layout_Orientable.orientation {set; get;}
|
Efl.Ui.Layout_Orientable.orientation {set; get;}
|
||||||
Efl.Ui.Position_Manager.Data_Access_V1.data_access {set;}
|
Efl.Ui.Position_Manager.Data_Access_V1.data_access {set;}
|
||||||
Efl.Object.finalize;
|
Efl.Object.finalize;
|
||||||
|
Efl.Object.invalidate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -480,12 +480,14 @@ _efl_ui_position_manager_list_efl_ui_layout_orientable_orientation_get(const Eo
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_ui_position_manager_list_efl_object_destructor(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd)
|
_efl_ui_position_manager_list_efl_object_invalidate(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd)
|
||||||
{
|
{
|
||||||
if (pd->rebuild_absolut_size)
|
if (pd->rebuild_absolut_size)
|
||||||
eina_future_cancel(pd->rebuild_absolut_size);
|
eina_future_cancel(pd->rebuild_absolut_size);
|
||||||
|
|
||||||
efl_destructor(efl_super(obj, MY_CLASS));
|
efl_ui_position_manager_data_access_v1_data_access_set(obj, NULL, NULL, NULL, NULL, NULL, NULL, 0);
|
||||||
|
|
||||||
|
efl_invalidate(efl_super(obj, MY_CLASS));
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static int
|
EOLIAN static int
|
||||||
|
@ -524,7 +526,16 @@ _efl_ui_position_manager_list_efl_ui_position_manager_entity_version(Eo *obj EIN
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_ui_position_manager_list_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
|
_efl_ui_position_manager_list_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
|
||||||
{
|
{
|
||||||
|
// Cleanup cache first
|
||||||
cache_invalidate(obj, pd);
|
cache_invalidate(obj, pd);
|
||||||
|
|
||||||
|
// Clean callback if they were set
|
||||||
|
if (pd->callbacks.object.free_cb)
|
||||||
|
pd->callbacks.object.free_cb(pd->callbacks.object.data);
|
||||||
|
if (pd->callbacks.size.free_cb)
|
||||||
|
pd->callbacks.size.free_cb(pd->callbacks.size.data);
|
||||||
|
|
||||||
|
// Set them
|
||||||
pd->callbacks.object.data = obj_access_data;
|
pd->callbacks.object.data = obj_access_data;
|
||||||
pd->callbacks.object.access = obj_access;
|
pd->callbacks.object.access = obj_access;
|
||||||
pd->callbacks.object.free_cb = obj_access_free_cb;
|
pd->callbacks.object.free_cb = obj_access_free_cb;
|
||||||
|
|
|
@ -8,7 +8,7 @@ class @beta Efl.Ui.Position_Manager.List extends Efl.Object
|
||||||
the layout of all items. This supports the vertical and horizontal orientation.
|
the layout of all items. This supports the vertical and horizontal orientation.
|
||||||
]]
|
]]
|
||||||
implements {
|
implements {
|
||||||
Efl.Object.destructor;
|
Efl.Object.invalidate;
|
||||||
Efl.Ui.Position_Manager.Entity.version;
|
Efl.Ui.Position_Manager.Entity.version;
|
||||||
Efl.Ui.Position_Manager.Entity.viewport {set;}
|
Efl.Ui.Position_Manager.Entity.viewport {set;}
|
||||||
Efl.Ui.Position_Manager.Entity.scroll_position {set;}
|
Efl.Ui.Position_Manager.Entity.scroll_position {set;}
|
||||||
|
|
Loading…
Reference in New Issue