efl_ui_pager: fix to delete component objects when pager is deleted

Pager creates Efl.Canvas.Rectangle objects when pager is constructed.
Since the parent of these component objects is evas, these component
objects are not deleted automatically when pager is deleted.
These component objects cause event block after pager is deleted.
(e.g. click event is blocked)
To resolve this issue, these component objects are deleted manually when
pager is deleted.
This commit is contained in:
Jaehyun Cho 2019-04-17 15:00:58 +09:00
parent 74d1a0ec08
commit 382520fda4
2 changed files with 14 additions and 0 deletions

View File

@ -379,6 +379,19 @@ _efl_ui_pager_efl_object_constructor(Eo *obj,
return obj;
}
EOLIAN static void
_efl_ui_pager_efl_object_invalidate(Eo *obj,
Efl_Ui_Pager_Data *pd)
{
efl_invalidate(efl_super(obj, MY_CLASS));
/* Since the parent of foreclip and backclip is evas, foreclip and backclip
* are not deleted automatically when pager is deleted.
* Therefore, foreclip and backclip are deleted manually here. */
efl_del(pd->foreclip);
efl_del(pd->backclip);
}
EOLIAN static int
_efl_ui_pager_efl_container_content_count(Eo *obj EINA_UNUSED,
Efl_Ui_Pager_Data *pd)

View File

@ -90,6 +90,7 @@ class @beta Efl.Ui.Pager extends Efl.Ui.Layout_Base implements Efl.Pack_Linear
}
implements {
Efl.Object.constructor;
Efl.Object.invalidate;
Efl.Container.content_count;
Efl.Pack.pack_clear; //TODO
Efl.Pack.unpack_all; //TODO