From f8c40114589ba044a714e2bc35d1affa34b5ef5f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 25 Feb 2019 07:45:43 -0500 Subject: [PATCH] efl.content: add event for when content is changed containing content as data Summary: ref T7588 Reviewers: cedric, segfaultxavi Reviewed By: cedric, segfaultxavi Subscribers: bu5hm4n, cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T7588 Differential Revision: https://phab.enlightenment.org/D7907 --- src/lib/edje/edje_util.c | 2 +- src/lib/efl/interfaces/efl_content.eo | 3 +++ src/lib/elementary/efl_ui_pan.c | 2 ++ src/lib/elementary/efl_ui_panel.c | 4 ++-- src/lib/elementary/elm_mapbuf.c | 3 ++- src/lib/elementary/elm_notify.c | 2 ++ src/lib/elementary/elm_scroller.c | 2 ++ 7 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index ba7da81abc..4d1af34575 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -3060,7 +3060,7 @@ _edje_efl_content_content_set(Edje *ed, const char *part, Efl_Gfx_Entity *obj_sw eud->u.swallow.child = obj_swallow; } } - + efl_event_callback_call(ed->obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, obj_swallow); return EINA_TRUE; } diff --git a/src/lib/efl/interfaces/efl_content.eo b/src/lib/efl/interfaces/efl_content.eo index a5dbe43ef6..961bce9fb8 100644 --- a/src/lib/efl/interfaces/efl_content.eo +++ b/src/lib/efl/interfaces/efl_content.eo @@ -21,4 +21,7 @@ interface @beta Efl.Content return: Efl.Gfx.Entity; [[Unswallowed object]] } } + events { + content,changed: Efl.Gfx.Entity; [[Sent after the content is set or unset using the current content object.]] + } } diff --git a/src/lib/elementary/efl_ui_pan.c b/src/lib/elementary/efl_ui_pan.c index b84e0ba9d6..dc9ddcc5e0 100644 --- a/src/lib/elementary/efl_ui_pan.c +++ b/src/lib/elementary/efl_ui_pan.c @@ -178,6 +178,7 @@ _efl_ui_pan_efl_content_content_set(Evas_Object *obj, Efl_Ui_Pan_Data *psd, Evas evas_object_smart_changed(obj); end: + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, content); efl_event_callback_call(obj, EFL_UI_PAN_EVENT_CONTENT_CHANGED, NULL); return EINA_TRUE; } @@ -201,6 +202,7 @@ _efl_ui_pan_efl_content_content_unset(Eo *obj EINA_UNUSED, Efl_Ui_Pan_Data *pd) obj); pd->content = NULL; pd->content_w = pd->content_h = pd->px = pd->py = 0; + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, NULL); efl_event_callback_call(obj, EFL_UI_PAN_EVENT_CONTENT_CHANGED, NULL); return old_content; diff --git a/src/lib/elementary/efl_ui_panel.c b/src/lib/elementary/efl_ui_panel.c index 8351c8972e..77c8ae15ec 100644 --- a/src/lib/elementary/efl_ui_panel.c +++ b/src/lib/elementary/efl_ui_panel.c @@ -727,7 +727,7 @@ _efl_ui_panel_efl_content_content_set(Eo *obj, Efl_Ui_Panel_Data *sd, Efl_Gfx_En else elm_widget_sub_object_add(obj, sd->content); } - + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, content); if (efl_finalized_get(obj)) elm_layout_sizing_eval(obj); @@ -752,7 +752,7 @@ _efl_ui_panel_efl_content_content_unset(Eo *obj EINA_UNUSED, Efl_Ui_Panel_Data * if (sd->scrollable) _elm_widget_sub_object_redirect_to_top(sd->scr_ly, sd->content); sd->content = NULL; - + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, NULL); return ret; } diff --git a/src/lib/elementary/elm_mapbuf.c b/src/lib/elementary/elm_mapbuf.c index a427ec86d3..9e8369f469 100644 --- a/src/lib/elementary/elm_mapbuf.c +++ b/src/lib/elementary/elm_mapbuf.c @@ -220,7 +220,7 @@ _elm_mapbuf_content_set(Eo *obj, Elm_Mapbuf_Data *sd, const char *part, Evas_Obj } else evas_object_color_set(wd->resize_obj, 0, 0, 0, 0); - + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, content); _sizing_eval(obj); _configure(obj); @@ -244,6 +244,7 @@ _elm_mapbuf_content_unset(Eo *obj, Elm_Mapbuf_Data *sd, const char *part) content = sd->content; _elm_widget_sub_object_redirect_to_top(obj, content); _elm_mapbuf_content_unset_internal(sd, obj, content); + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, NULL); return content; } diff --git a/src/lib/elementary/elm_notify.c b/src/lib/elementary/elm_notify.c index c8902647c8..97e92acfcd 100644 --- a/src/lib/elementary/elm_notify.c +++ b/src/lib/elementary/elm_notify.c @@ -374,6 +374,7 @@ _elm_notify_content_set(Eo *obj, Elm_Notify_Data *sd, const char *part, Evas_Obj _changed_size_hints_cb, obj); edje_object_part_swallow(sd->notify, "elm.swallow.content", content); } + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, content); _calc(obj); @@ -399,6 +400,7 @@ _elm_notify_content_unset(Eo *obj, Elm_Notify_Data *sd, const char *part) content = sd->content; _elm_widget_sub_object_redirect_to_top(obj, sd->content); edje_object_part_unswallow(sd->notify, content); + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, NULL); return content; } diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c index a86c158836..0409cd9d31 100644 --- a/src/lib/elementary/elm_scroller.c +++ b/src/lib/elementary/elm_scroller.c @@ -690,6 +690,7 @@ _elm_scroller_content_set(Eo *obj, Elm_Scroller_Data *sd, const char *part, Evas sd->proxy_content[i] = NULL; } } + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, content); elm_layout_sizing_eval(obj); @@ -725,6 +726,7 @@ _elm_scroller_content_unset(Eo *obj, Elm_Scroller_Data *sd, const char *part) _elm_widget_sub_object_redirect_to_top(obj, sd->content); elm_interface_scrollable_content_set(obj, NULL); sd->content = NULL; + efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, NULL); return ret; }