From ba550d9696893a50abef4cadeac27a3acf759c5a Mon Sep 17 00:00:00 2001 From: Jaehyun Cho Date: Wed, 17 Apr 2019 15:00:58 +0900 Subject: [PATCH] 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. --- src/lib/elementary/efl_ui_pager.c | 13 +++++++++++++ src/lib/elementary/efl_ui_pager.eo | 1 + 2 files changed, 14 insertions(+) diff --git a/src/lib/elementary/efl_ui_pager.c b/src/lib/elementary/efl_ui_pager.c index 0ce1488..a37d0fd 100644 --- a/src/lib/elementary/efl_ui_pager.c +++ b/src/lib/elementary/efl_ui_pager.c @@ -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) diff --git a/src/lib/elementary/efl_ui_pager.eo b/src/lib/elementary/efl_ui_pager.eo index 5a3a974..646be5a 100644 --- a/src/lib/elementary/efl_ui_pager.eo +++ b/src/lib/elementary/efl_ui_pager.eo @@ -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 -- 2.7.4