From 58a2fa931bf5cfa3093c0b9210c1a7ab60fc4e50 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Wed, 20 Nov 2019 16:45:45 +0100 Subject: [PATCH] efl_ui_spotlight_manager: remove the group object i do not know why its there, it caused a bug in the past (in regards of clippers and visibility). Now we can get rid of it completly, the state of it is always compatible to the one of the widget itself, soooo ... Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D10702 --- data/elementary/themes/edc/efl/pager.edc | 5 ---- .../elementary/efl_ui_spotlight_container.c | 12 +++------ .../elementary/efl_ui_spotlight_manager.eo | 3 --- .../efl_ui_spotlight_manager_plain.c | 13 ++++----- .../efl_ui_spotlight_manager_scroll.c | 27 +++++++++---------- .../efl_ui_spotlight_manager_stack.c | 16 +++++------ 6 files changed, 29 insertions(+), 47 deletions(-) diff --git a/data/elementary/themes/edc/efl/pager.edc b/data/elementary/themes/edc/efl/pager.edc index 6f45c3680c..b4a3dbecdb 100644 --- a/data/elementary/themes/edc/efl/pager.edc +++ b/data/elementary/themes/edc/efl/pager.edc @@ -10,11 +10,6 @@ group { "efl/pager"; data.item: "version" "123"; desc { "default"; } } - swallow { "efl.page_root"; - scale; - desc { "default"; - } - } swallow { "efl.indicator"; scale; desc { "default"; diff --git a/src/lib/elementary/efl_ui_spotlight_container.c b/src/lib/elementary/efl_ui_spotlight_container.c index 993438c200..a715d7f04e 100644 --- a/src/lib/elementary/efl_ui_spotlight_container.c +++ b/src/lib/elementary/efl_ui_spotlight_container.c @@ -9,7 +9,7 @@ typedef struct _Efl_Ui_Spotlight_Container_Data { Eina_List *content_list; - Eo *page_root, *event; + Eo *event; struct { Eina_Size2D sz; } page_spec; @@ -203,10 +203,7 @@ _efl_ui_spotlight_container_efl_object_constructor(Eo *obj, elm_widget_can_focus_set(obj, EINA_FALSE); - pd->page_root = efl_add(EFL_CANVAS_GROUP_CLASS, evas_object_evas_get(obj)); - efl_content_set(efl_part(obj, "efl.page_root"), pd->page_root); - - efl_event_callback_add(pd->page_root, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, pd); + efl_event_callback_add(obj, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, pd); pd->event = efl_add(EFL_CANVAS_RECTANGLE_CLASS, evas_object_evas_get(obj)); @@ -616,7 +613,7 @@ _efl_ui_spotlight_container_spotlight_manager_set(Eo *obj, Efl_Ui_Spotlight_Cont if (pd->transition) { - efl_ui_spotlight_manager_bind(pd->transition, NULL, NULL); + efl_ui_spotlight_manager_bind(pd->transition, NULL); efl_del(pd->transition); } @@ -631,8 +628,7 @@ _efl_ui_spotlight_container_spotlight_manager_set(Eo *obj, Efl_Ui_Spotlight_Cont //disable animation when not finalized yet, this help reducing the overhead of scheduling a animation that will not be displayed _animated_transition_manager_eval(obj, pd); efl_ui_spotlight_manager_animated_transition_set(pd->transition, efl_finalized_get(obj)); - efl_ui_spotlight_manager_bind(pd->transition, obj, - pd->page_root); + efl_ui_spotlight_manager_bind(pd->transition, obj); efl_ui_spotlight_manager_size_set(pd->transition, pd->page_spec.sz); efl_event_callback_add(pd->transition, EFL_UI_SPOTLIGHT_MANAGER_EVENT_POS_UPDATE, _pos_updated, obj); } diff --git a/src/lib/elementary/efl_ui_spotlight_manager.eo b/src/lib/elementary/efl_ui_spotlight_manager.eo index ddb1ac1041..6de4898a94 100644 --- a/src/lib/elementary/efl_ui_spotlight_manager.eo +++ b/src/lib/elementary/efl_ui_spotlight_manager.eo @@ -18,9 +18,6 @@ abstract @beta Efl.Ui.Spotlight.Manager extends Efl.Object { ]] params { spotlight : Efl.Ui.Spotlight.Container; [[The container to bind the manager to.]] - group : Efl.Canvas.Group; [[The graphical group where the views should be added with - @Efl.Canvas.Group.group_member_add and removed with - @Efl.Canvas.Group.group_member_remove.]] } } content_add @pure_virtual { diff --git a/src/lib/elementary/efl_ui_spotlight_manager_plain.c b/src/lib/elementary/efl_ui_spotlight_manager_plain.c index 50371ed3fc..49ca251c6a 100644 --- a/src/lib/elementary/efl_ui_spotlight_manager_plain.c +++ b/src/lib/elementary/efl_ui_spotlight_manager_plain.c @@ -8,7 +8,6 @@ typedef struct { Efl_Ui_Spotlight_Container * container; - Efl_Gfx_Entity *group; Eina_Size2D page_size; Efl_Ui_Widget *current_content; Eina_Bool animation; @@ -31,7 +30,7 @@ static void _geom_sync(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Plain_Data *pd) { Efl_Gfx_Entity *entity = pd->current_content; - Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->group); + Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->container); Eina_Rect goal = EINA_RECT_EMPTY(); goal.size = pd->page_size; @@ -58,16 +57,14 @@ EFL_CALLBACKS_ARRAY_DEFINE(group_callback, ) EOLIAN static void -_efl_ui_spotlight_manager_plain_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Plain_Data *pd, Efl_Ui_Spotlight_Container *spotlight, Efl_Canvas_Group *group) +_efl_ui_spotlight_manager_plain_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Plain_Data *pd, Efl_Ui_Spotlight_Container *spotlight) { - if (spotlight && group) + if (spotlight) { Efl_Ui_Widget *index; pd->container = spotlight; - pd->group = group; - - efl_event_callback_array_add(pd->group, group_callback(), obj); + efl_event_callback_array_add(pd->container, group_callback(), obj); for (int i = 0; i < efl_content_count(spotlight) ; ++i) { Efl_Gfx_Entity *elem = efl_pack_content_get(spotlight, i); @@ -147,7 +144,7 @@ _efl_ui_spotlight_manager_plain_efl_object_destructor(Eo *obj, Efl_Ui_Spotlight_ { efl_destructor(efl_super(obj, MY_CLASS)); - efl_event_callback_array_del(pd->group, group_callback(), obj); + efl_event_callback_array_del(pd->container, group_callback(), obj); for (int i = 0; i < efl_content_count(pd->container); ++i) { diff --git a/src/lib/elementary/efl_ui_spotlight_manager_scroll.c b/src/lib/elementary/efl_ui_spotlight_manager_scroll.c index 34baa3fbfb..d6e1dbad21 100644 --- a/src/lib/elementary/efl_ui_spotlight_manager_scroll.c +++ b/src/lib/elementary/efl_ui_spotlight_manager_scroll.c @@ -7,7 +7,7 @@ typedef struct { Efl_Ui_Spotlight_Container * container; - Efl_Gfx_Entity *group, *foreclip, *backclip; + Efl_Gfx_Entity *foreclip, *backclip; Eina_Size2D page_size; struct { Eina_Bool active; @@ -39,7 +39,7 @@ static void _apply_box_properties(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd) { Eina_Rect geometry = EINA_RECT_EMPTY(); - Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->group); + Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->container); double current_pos; if (pd->transition.active) @@ -169,22 +169,21 @@ EFL_CALLBACKS_ARRAY_DEFINE(mouse_listeners, ); EOLIAN static void -_efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd, Efl_Ui_Spotlight_Container *spotlight, Efl_Canvas_Group *group) +_efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd, Efl_Ui_Spotlight_Container *spotlight) { - if (spotlight && group) + if (spotlight) { pd->container = spotlight; - pd->group = group; - efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj); - efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj); + efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj); + efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj); pd->foreclip = efl_add(EFL_CANVAS_RECTANGLE_CLASS, - evas_object_evas_get(group)); + evas_object_evas_get(pd->container)); evas_object_static_clip_set(pd->foreclip, EINA_TRUE); efl_canvas_group_member_add(spotlight, pd->foreclip); pd->backclip = efl_add(EFL_CANVAS_RECTANGLE_CLASS, - evas_object_evas_get(group)); + evas_object_evas_get(pd->container)); evas_object_static_clip_set(pd->backclip, EINA_TRUE); efl_gfx_entity_visible_set(pd->backclip, EINA_FALSE); efl_canvas_group_member_add(spotlight, pd->backclip); @@ -192,7 +191,7 @@ _efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_S for (int i = 0; i < efl_content_count(spotlight) ; ++i) { Efl_Gfx_Entity *elem = efl_pack_content_get(spotlight, i); efl_canvas_object_clipper_set(elem, pd->backclip); - efl_canvas_group_member_add(pd->group, elem); + efl_canvas_group_member_add(pd->container, elem); efl_gfx_entity_visible_set(elem, EINA_TRUE); } _apply_box_properties(obj, pd); @@ -207,7 +206,7 @@ _efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_content_add(Eo *obj EI { efl_gfx_entity_visible_set(subobj, EINA_TRUE); efl_canvas_object_clipper_set(subobj, pd->backclip); - efl_canvas_group_member_add(pd->group, subobj); + efl_canvas_group_member_add(pd->container, subobj); if (!pd->transition.active) _apply_box_properties(obj, pd); @@ -218,7 +217,7 @@ EOLIAN static void _efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_content_del(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Scroll_Data *pd, Efl_Gfx_Entity *subobj, int index EINA_UNUSED) { efl_canvas_object_clipper_set(subobj, NULL); - efl_canvas_group_member_remove(pd->group, subobj); + efl_canvas_group_member_remove(pd->container, subobj); if (!pd->transition.active) _apply_box_properties(obj, pd); @@ -326,8 +325,8 @@ _efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_animated_transition_ge EOLIAN static void _efl_ui_spotlight_manager_scroll_efl_object_invalidate(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd EINA_UNUSED) { - efl_event_callback_del(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj); - efl_event_callback_del(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj); + efl_event_callback_del(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj); + efl_event_callback_del(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj); efl_event_callback_array_del(efl_content_get(efl_part(pd->container, "efl.event")), mouse_listeners(), obj); efl_del(pd->backclip); efl_del(pd->foreclip); diff --git a/src/lib/elementary/efl_ui_spotlight_manager_stack.c b/src/lib/elementary/efl_ui_spotlight_manager_stack.c index 3696eb991e..42e80d7b0b 100644 --- a/src/lib/elementary/efl_ui_spotlight_manager_stack.c +++ b/src/lib/elementary/efl_ui_spotlight_manager_stack.c @@ -8,7 +8,6 @@ typedef struct { Efl_Ui_Spotlight_Container * container; - Efl_Gfx_Entity *group; Efl_Canvas_Animation_Player *alpha_anim; Efl_Gfx_Entity *content[2]; int ids[2]; //only used when in animation @@ -21,7 +20,7 @@ typedef struct { static void _geom_sync(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Stack_Data *pd) { - Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->group); + Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->container); Eina_Rect goal = EINA_RECT_EMPTY(); goal.size = pd->page_size; goal.y = (group_pos.y + group_pos.h/2)-pd->page_size.h/2; @@ -69,15 +68,14 @@ _hide_object_cb(void *data, const Efl_Event *ev) } EOLIAN static void -_efl_ui_spotlight_manager_stack_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Stack_Data *pd, Efl_Ui_Spotlight_Container *spotlight, Efl_Canvas_Group *group) +_efl_ui_spotlight_manager_stack_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Stack_Data *pd, Efl_Ui_Spotlight_Container *spotlight) { - if (spotlight && group) + if (spotlight) { pd->container = spotlight; - pd->group = group; - efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj); - efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj); + efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj); + efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj); pd->alpha_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, obj); efl_animation_alpha_set(pd->alpha_anim, 0.0, 1.0); @@ -167,8 +165,8 @@ _efl_ui_spotlight_manager_stack_efl_ui_spotlight_manager_size_set(Eo *obj, Efl_U EOLIAN static void _efl_ui_spotlight_manager_stack_efl_object_invalidate(Eo *obj, Efl_Ui_Spotlight_Manager_Stack_Data *pd EINA_UNUSED) { - efl_event_callback_del(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj); - efl_event_callback_del(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj); + efl_event_callback_del(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj); + efl_event_callback_del(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj); efl_invalidate(efl_super(obj, MY_CLASS));