forked from enlightenment/efl
efl_ui_spotlight: move event rectangle
for now the eventrect was a swallow part, created by the container, set to the edje layout. However, the only real user for this is the scroll spotlight manager. Which means, we have mostly unneeded element resized by edje, which is quite an overhead. With this commit, this is moved to the scroll manager, which makes the usage with stack and plain less memory heavy. Differential Revision: https://phab.enlightenment.org/D10763
This commit is contained in:
parent
a66f1130af
commit
d51bdf3c77
|
@ -8,12 +8,6 @@ group { "efl/spotlight"; data.item: "version" "123";
|
||||||
min: 0 50;
|
min: 0 50;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
swallow { "efl.event";
|
|
||||||
scale;
|
|
||||||
repeat_events: 1;
|
|
||||||
desc { "default";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -218,12 +218,6 @@ _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);
|
||||||
|
|
||||||
efl_event_callback_array_add(obj, spotlight_resized(), pd);
|
efl_event_callback_array_add(obj, spotlight_resized(), pd);
|
||||||
pd->event = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
|
|
||||||
evas_object_evas_get(obj));
|
|
||||||
evas_object_color_set(pd->event, 0, 0, 0, 0);
|
|
||||||
evas_object_repeat_events_set(pd->event, EINA_TRUE);
|
|
||||||
efl_content_set(efl_part(obj, "efl.event"), pd->event);
|
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Efl_Ui_Spotlight_Container * container;
|
Efl_Ui_Spotlight_Container * container;
|
||||||
Efl_Gfx_Entity *foreclip, *backclip;
|
Efl_Gfx_Entity *foreclip, *backclip;
|
||||||
|
Efl_Canvas_Rectangle *event;
|
||||||
Eina_Size2D page_size;
|
Eina_Size2D page_size;
|
||||||
struct {
|
struct {
|
||||||
Eina_Bool active;
|
Eina_Bool active;
|
||||||
|
@ -47,6 +48,7 @@ _apply_box_properties(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd)
|
||||||
else
|
else
|
||||||
current_pos = efl_pack_index_get(pd->container, efl_ui_spotlight_active_element_get(pd->container));
|
current_pos = efl_pack_index_get(pd->container, efl_ui_spotlight_active_element_get(pd->container));
|
||||||
|
|
||||||
|
efl_gfx_entity_geometry_set(pd->event, group_pos);
|
||||||
efl_gfx_entity_geometry_set(pd->foreclip, group_pos);
|
efl_gfx_entity_geometry_set(pd->foreclip, group_pos);
|
||||||
//first calculate the size
|
//first calculate the size
|
||||||
geometry.h = pd->page_size.h;
|
geometry.h = pd->page_size.h;
|
||||||
|
@ -174,17 +176,22 @@ _efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_S
|
||||||
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);
|
||||||
|
|
||||||
|
pd->event = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
|
||||||
|
evas_object_evas_get(obj));
|
||||||
|
efl_canvas_object_repeat_events_set(pd->event, EINA_TRUE);
|
||||||
|
efl_event_callback_array_add(pd->event, mouse_listeners(), obj);
|
||||||
|
efl_canvas_group_member_add(spotlight, pd->event);
|
||||||
|
efl_gfx_color_set(pd->event, 0, 0, 0, 0);
|
||||||
|
|
||||||
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->container, 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);
|
||||||
|
efl_gfx_stack_above(pd->event, elem);
|
||||||
}
|
}
|
||||||
_apply_box_properties(obj, pd);
|
_apply_box_properties(obj, pd);
|
||||||
|
|
||||||
efl_event_callback_array_add(efl_content_get(efl_part(pd->container, "efl.event")), mouse_listeners(), obj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
|
@ -193,7 +200,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->container, subobj);
|
efl_canvas_group_member_add(pd->container, subobj);
|
||||||
|
efl_gfx_stack_above(pd->event, subobj);
|
||||||
if (!pd->transition.active)
|
if (!pd->transition.active)
|
||||||
_apply_box_properties(obj, pd);
|
_apply_box_properties(obj, pd);
|
||||||
}
|
}
|
||||||
|
@ -311,7 +318,7 @@ _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_array_del(efl_content_get(efl_part(pd->container, "efl.event")), mouse_listeners(), obj);
|
efl_del(pd->event);
|
||||||
efl_del(pd->backclip);
|
efl_del(pd->backclip);
|
||||||
efl_del(pd->foreclip);
|
efl_del(pd->foreclip);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue