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";
|
desc { "default";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
swallow { "efl.page_root";
|
|
||||||
scale;
|
|
||||||
desc { "default";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
swallow { "efl.indicator";
|
swallow { "efl.indicator";
|
||||||
scale;
|
scale;
|
||||||
desc { "default";
|
desc { "default";
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
typedef struct _Efl_Ui_Spotlight_Container_Data
|
typedef struct _Efl_Ui_Spotlight_Container_Data
|
||||||
{
|
{
|
||||||
Eina_List *content_list;
|
Eina_List *content_list;
|
||||||
Eo *page_root, *event;
|
Eo *event;
|
||||||
struct {
|
struct {
|
||||||
Eina_Size2D sz;
|
Eina_Size2D sz;
|
||||||
} page_spec;
|
} page_spec;
|
||||||
|
@ -203,10 +203,7 @@ _efl_ui_spotlight_container_efl_object_constructor(Eo *obj,
|
||||||
|
|
||||||
elm_widget_can_focus_set(obj, EINA_FALSE);
|
elm_widget_can_focus_set(obj, EINA_FALSE);
|
||||||
|
|
||||||
pd->page_root = efl_add(EFL_CANVAS_GROUP_CLASS, evas_object_evas_get(obj));
|
efl_event_callback_add(obj, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, pd);
|
||||||
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);
|
|
||||||
|
|
||||||
pd->event = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
|
pd->event = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
|
||||||
evas_object_evas_get(obj));
|
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)
|
if (pd->transition)
|
||||||
{
|
{
|
||||||
efl_ui_spotlight_manager_bind(pd->transition, NULL, NULL);
|
efl_ui_spotlight_manager_bind(pd->transition, NULL);
|
||||||
efl_del(pd->transition);
|
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
|
//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);
|
_animated_transition_manager_eval(obj, pd);
|
||||||
efl_ui_spotlight_manager_animated_transition_set(pd->transition, efl_finalized_get(obj));
|
efl_ui_spotlight_manager_animated_transition_set(pd->transition, efl_finalized_get(obj));
|
||||||
efl_ui_spotlight_manager_bind(pd->transition, obj,
|
efl_ui_spotlight_manager_bind(pd->transition, obj);
|
||||||
pd->page_root);
|
|
||||||
efl_ui_spotlight_manager_size_set(pd->transition, pd->page_spec.sz);
|
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);
|
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 {
|
params {
|
||||||
spotlight : Efl.Ui.Spotlight.Container; [[The container to bind the manager to.]]
|
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 {
|
content_add @pure_virtual {
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Efl_Ui_Spotlight_Container * container;
|
Efl_Ui_Spotlight_Container * container;
|
||||||
Efl_Gfx_Entity *group;
|
|
||||||
Eina_Size2D page_size;
|
Eina_Size2D page_size;
|
||||||
Efl_Ui_Widget *current_content;
|
Efl_Ui_Widget *current_content;
|
||||||
Eina_Bool animation;
|
Eina_Bool animation;
|
||||||
|
@ -31,7 +30,7 @@ static void
|
||||||
_geom_sync(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Plain_Data *pd)
|
_geom_sync(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Plain_Data *pd)
|
||||||
{
|
{
|
||||||
Efl_Gfx_Entity *entity = pd->current_content;
|
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();
|
Eina_Rect goal = EINA_RECT_EMPTY();
|
||||||
|
|
||||||
goal.size = pd->page_size;
|
goal.size = pd->page_size;
|
||||||
|
@ -58,16 +57,14 @@ EFL_CALLBACKS_ARRAY_DEFINE(group_callback,
|
||||||
)
|
)
|
||||||
|
|
||||||
EOLIAN static void
|
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;
|
Efl_Ui_Widget *index;
|
||||||
|
|
||||||
pd->container = spotlight;
|
pd->container = spotlight;
|
||||||
pd->group = group;
|
efl_event_callback_array_add(pd->container, group_callback(), obj);
|
||||||
|
|
||||||
efl_event_callback_array_add(pd->group, group_callback(), obj);
|
|
||||||
|
|
||||||
for (int i = 0; i < efl_content_count(spotlight) ; ++i) {
|
for (int i = 0; i < efl_content_count(spotlight) ; ++i) {
|
||||||
Efl_Gfx_Entity *elem = efl_pack_content_get(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_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)
|
for (int i = 0; i < efl_content_count(pd->container); ++i)
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Efl_Ui_Spotlight_Container * container;
|
Efl_Ui_Spotlight_Container * container;
|
||||||
Efl_Gfx_Entity *group, *foreclip, *backclip;
|
Efl_Gfx_Entity *foreclip, *backclip;
|
||||||
Eina_Size2D page_size;
|
Eina_Size2D page_size;
|
||||||
struct {
|
struct {
|
||||||
Eina_Bool active;
|
Eina_Bool active;
|
||||||
|
@ -39,7 +39,7 @@ static void
|
||||||
_apply_box_properties(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd)
|
_apply_box_properties(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd)
|
||||||
{
|
{
|
||||||
Eina_Rect geometry = EINA_RECT_EMPTY();
|
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;
|
double current_pos;
|
||||||
|
|
||||||
if (pd->transition.active)
|
if (pd->transition.active)
|
||||||
|
@ -169,22 +169,21 @@ EFL_CALLBACKS_ARRAY_DEFINE(mouse_listeners,
|
||||||
);
|
);
|
||||||
|
|
||||||
EOLIAN static void
|
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->container = spotlight;
|
||||||
pd->group = group;
|
efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
|
||||||
efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
|
efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
|
||||||
efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
|
|
||||||
|
|
||||||
pd->foreclip = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
|
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);
|
evas_object_static_clip_set(pd->foreclip, EINA_TRUE);
|
||||||
efl_canvas_group_member_add(spotlight, pd->foreclip);
|
efl_canvas_group_member_add(spotlight, pd->foreclip);
|
||||||
|
|
||||||
pd->backclip = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
|
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);
|
evas_object_static_clip_set(pd->backclip, EINA_TRUE);
|
||||||
efl_gfx_entity_visible_set(pd->backclip, EINA_FALSE);
|
efl_gfx_entity_visible_set(pd->backclip, EINA_FALSE);
|
||||||
efl_canvas_group_member_add(spotlight, pd->backclip);
|
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) {
|
for (int i = 0; i < efl_content_count(spotlight) ; ++i) {
|
||||||
Efl_Gfx_Entity *elem = efl_pack_content_get(spotlight, i);
|
Efl_Gfx_Entity *elem = efl_pack_content_get(spotlight, i);
|
||||||
efl_canvas_object_clipper_set(elem, pd->backclip);
|
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);
|
efl_gfx_entity_visible_set(elem, EINA_TRUE);
|
||||||
}
|
}
|
||||||
_apply_box_properties(obj, pd);
|
_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_gfx_entity_visible_set(subobj, EINA_TRUE);
|
||||||
efl_canvas_object_clipper_set(subobj, pd->backclip);
|
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)
|
if (!pd->transition.active)
|
||||||
_apply_box_properties(obj, pd);
|
_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_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_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)
|
if (!pd->transition.active)
|
||||||
_apply_box_properties(obj, pd);
|
_apply_box_properties(obj, pd);
|
||||||
|
@ -326,8 +325,8 @@ _efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_animated_transition_ge
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_ui_spotlight_manager_scroll_efl_object_invalidate(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd EINA_UNUSED)
|
_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->container, 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_POSITION_CHANGED, _move_cb, obj);
|
||||||
efl_event_callback_array_del(efl_content_get(efl_part(pd->container, "efl.event")), mouse_listeners(), 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->backclip);
|
||||||
efl_del(pd->foreclip);
|
efl_del(pd->foreclip);
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Efl_Ui_Spotlight_Container * container;
|
Efl_Ui_Spotlight_Container * container;
|
||||||
Efl_Gfx_Entity *group;
|
|
||||||
Efl_Canvas_Animation_Player *alpha_anim;
|
Efl_Canvas_Animation_Player *alpha_anim;
|
||||||
Efl_Gfx_Entity *content[2];
|
Efl_Gfx_Entity *content[2];
|
||||||
int ids[2]; //only used when in animation
|
int ids[2]; //only used when in animation
|
||||||
|
@ -21,7 +20,7 @@ typedef struct {
|
||||||
static void
|
static void
|
||||||
_geom_sync(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Stack_Data *pd)
|
_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();
|
Eina_Rect goal = EINA_RECT_EMPTY();
|
||||||
goal.size = pd->page_size;
|
goal.size = pd->page_size;
|
||||||
goal.y = (group_pos.y + group_pos.h/2)-pd->page_size.h/2;
|
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
|
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->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->container, 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_POSITION_CHANGED, _move_cb, obj);
|
||||||
|
|
||||||
pd->alpha_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, obj);
|
pd->alpha_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, obj);
|
||||||
efl_animation_alpha_set(pd->alpha_anim, 0.0, 1.0);
|
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
|
EOLIAN static void
|
||||||
_efl_ui_spotlight_manager_stack_efl_object_invalidate(Eo *obj, Efl_Ui_Spotlight_Manager_Stack_Data *pd EINA_UNUSED)
|
_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->container, 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_POSITION_CHANGED, _move_cb, obj);
|
||||||
|
|
||||||
efl_invalidate(efl_super(obj, MY_CLASS));
|
efl_invalidate(efl_super(obj, MY_CLASS));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue