forked from enlightenment/efl
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 <michael.blumenkrantz@gmail.com> Differential Revision: https://phab.enlightenment.org/D10702
This commit is contained in:
parent
5932520f03
commit
58a2fa931b
|
@ -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";
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
Loading…
Reference in New Issue