forked from enlightenment/efl
efl_ui_scrollable: implement efl_ui_scrollable_content_pos_get method.
Summary: Applications want to know current position on scroller. Also, it is necessary when calculate position of focusable object. Reviewers: herdsman, akanad, YOhoho, bu5hm4n Reviewed By: bu5hm4n Subscribers: bu5hm4n, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7251
This commit is contained in:
parent
bf70b32f04
commit
c4ae2be685
|
@ -13,13 +13,15 @@ _bt_clicked(void *data EINA_UNUSED, const Efl_Event *ev)
|
|||
static void
|
||||
_scroll_start_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
||||
{
|
||||
printf("scroll start: %p\n", ev->object);
|
||||
Eina_Position2D pos = efl_ui_scrollable_content_pos_get(ev->object);
|
||||
printf("scroll start: %p x: %d y: %d\n", ev->object, pos.x, pos.y);
|
||||
}
|
||||
|
||||
static void
|
||||
_scroll_stop_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
||||
{
|
||||
printf("scroll stop: %p\n", ev->object);
|
||||
Eina_Position2D pos = efl_ui_scrollable_content_pos_get(ev->object);
|
||||
printf("scroll stop: %p x: %d y: %d\n", ev->object, pos.x, pos.y);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1847,6 +1847,7 @@ _efl_ui_image_zoomable_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Zoomable
|
|||
elm_widget_can_focus_set(obj, EINA_TRUE);
|
||||
|
||||
priv->smanager = efl_add(EFL_UI_SCROLL_MANAGER_CLASS, obj);
|
||||
efl_composite_attach(obj, priv->smanager);
|
||||
|
||||
efl_ui_mirrored_set(priv->smanager, efl_ui_mirrored_get(obj));
|
||||
efl_ui_scrollable_bounce_enabled_set(priv->smanager, bounce, bounce);
|
||||
|
|
|
@ -433,6 +433,7 @@ _efl_ui_list_efl_object_finalize(Eo *obj,
|
|||
|
||||
pd->smanager = efl_add(EFL_UI_SCROLL_MANAGER_CLASS, obj);
|
||||
efl_ui_mirrored_set(pd->smanager, efl_ui_mirrored_get(obj));
|
||||
efl_composite_attach(obj, pd->smanager);
|
||||
|
||||
pd->pan = efl_add(EFL_UI_PAN_CLASS, obj);
|
||||
|
||||
|
@ -914,68 +915,6 @@ _efl_ui_list_efl_pack_pack_padding_get(const Eo *obj EINA_UNUSED,
|
|||
*/
|
||||
|
||||
/* Scroll APIs */
|
||||
EOLIAN static Eina_Size2D
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_content_size_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd)
|
||||
{
|
||||
return efl_ui_scrollable_content_size_get(pd->smanager);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Rect
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_viewport_geometry_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd)
|
||||
{
|
||||
return efl_ui_scrollable_viewport_geometry_get(pd->smanager);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_bounce_enabled_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
Eina_Bool horiz,
|
||||
Eina_Bool vert)
|
||||
{
|
||||
efl_ui_scrollable_bounce_enabled_set(pd->smanager, horiz, vert);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_bounce_enabled_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
Eina_Bool *horiz,
|
||||
Eina_Bool *vert)
|
||||
{
|
||||
efl_ui_scrollable_bounce_enabled_get(pd->smanager, horiz, vert);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_scroll_hold_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd)
|
||||
{
|
||||
return efl_ui_scrollable_scroll_hold_get(pd->smanager);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_scroll_hold_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
Eina_Bool hold)
|
||||
{
|
||||
efl_ui_scrollable_scroll_hold_set(pd->smanager, hold);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_scroll_freeze_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd)
|
||||
{
|
||||
return efl_ui_scrollable_scroll_freeze_get(pd->smanager);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_scroll_freeze_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
Eina_Bool freeze)
|
||||
{
|
||||
efl_ui_scrollable_scroll_freeze_set(pd->smanager, freeze);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_match_content_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
|
@ -990,33 +929,6 @@ _efl_ui_list_efl_ui_scrollable_interactive_match_content_set(Eo *obj EINA_UNUSED
|
|||
elm_layout_sizing_eval(obj);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_scrollbar_bar_mode_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
Efl_Ui_Scrollbar_Mode hmode,
|
||||
Efl_Ui_Scrollbar_Mode vmode)
|
||||
{
|
||||
efl_ui_scrollbar_bar_mode_set(pd->smanager, hmode, vmode);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_scrollbar_bar_mode_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
Efl_Ui_Scrollbar_Mode *hmode,
|
||||
Efl_Ui_Scrollbar_Mode *vmode)
|
||||
{
|
||||
efl_ui_scrollbar_bar_mode_get(pd->smanager, hmode, vmode);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_scrollable_interactive_scroll(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
Eina_Rect rc,
|
||||
Eina_Bool animation)
|
||||
{
|
||||
efl_ui_scrollable_scroll(pd->smanager, rc, animation);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_efl_ui_multi_selectable_select_mode_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_List_Data *pd,
|
||||
|
|
|
@ -78,14 +78,7 @@ class Efl.Ui.List (Efl.Ui.Layout,
|
|||
//Efl.Pack.pack_align { get; set; }
|
||||
|
||||
//Efl.Ui.Scrollable
|
||||
Efl.Ui.Scrollable_Interactive.scroll;
|
||||
Efl.Ui.Scrollable_Interactive.content_size{ get; }
|
||||
Efl.Ui.Scrollable_Interactive.viewport_geometry{ get; }
|
||||
Efl.Ui.Scrollable_Interactive.bounce_enabled { set; get; }
|
||||
Efl.Ui.Scrollable_Interactive.scroll_freeze { get; set; }
|
||||
Efl.Ui.Scrollable_Interactive.scroll_hold { get; set; }
|
||||
Efl.Ui.Scrollable_Interactive.match_content { set; }
|
||||
Efl.Ui.Scrollbar.bar_mode { get; set; }
|
||||
|
||||
//Efl.Ui.Multi_Selectable
|
||||
Efl.Ui.Multi_Selectable.select_mode {get; set;}
|
||||
|
|
|
@ -111,33 +111,6 @@ _efl_ui_list_view_pan_efl_object_destructor(Eo *obj, Efl_Ui_List_View_Pan_Data *
|
|||
|
||||
#include "efl_ui_list_view_pan.eo.c"
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_list_view_efl_ui_scrollable_interactive_content_pos_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *psd, Eina_Position2D pos)
|
||||
{
|
||||
efl_ui_scrollable_content_pos_set(psd->scrl_mgr, pos);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Position2D
|
||||
_efl_ui_list_view_efl_ui_scrollable_interactive_content_pos_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *psd)
|
||||
{
|
||||
Eina_Position2D pos = efl_ui_scrollable_content_pos_get(psd->scrl_mgr);
|
||||
return pos;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Size2D
|
||||
_efl_ui_list_view_efl_ui_scrollable_interactive_content_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *psd)
|
||||
{
|
||||
Eina_Size2D size = efl_ui_scrollable_content_size_get(psd->scrl_mgr);
|
||||
return size;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Rect
|
||||
_efl_ui_list_view_efl_ui_scrollable_interactive_viewport_geometry_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *psd)
|
||||
{
|
||||
Eina_Rect gmt = efl_ui_scrollable_viewport_geometry_get(psd->scrl_mgr);
|
||||
return gmt;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_efl_model_properties_has(Efl_Model *model, Eina_Stringshare *propfind)
|
||||
{
|
||||
|
@ -610,6 +583,7 @@ _efl_ui_list_view_efl_canvas_group_group_add(Eo *obj, Efl_Ui_List_View_Data *pd)
|
|||
|
||||
pd->scrl_mgr = efl_add(EFL_UI_SCROLL_MANAGER_CLASS, obj,
|
||||
efl_ui_mirrored_set(efl_added, efl_ui_mirrored_get(obj)));
|
||||
efl_composite_attach(obj, pd->scrl_mgr);
|
||||
pd->pan_obj = efl_add(MY_PAN_CLASS, obj);
|
||||
pan_data = efl_data_scope_get(pd->pan_obj, MY_PAN_CLASS);
|
||||
pan_data->wobj = obj;
|
||||
|
|
|
@ -83,9 +83,6 @@ class Efl.Ui.List_View (Efl.Ui.Layout, Efl.Ui.Scrollable_Interactive, Efl.Ui.Scr
|
|||
Efl.Ui.Focus.Composition.prepare;
|
||||
Efl.Ui.View.model { get; set; }
|
||||
|
||||
Efl.Ui.Scrollable_Interactive.viewport_geometry { get; }
|
||||
Efl.Ui.Scrollable_Interactive.content_pos { get; set; }
|
||||
Efl.Ui.Scrollable_Interactive.content_size { get; }
|
||||
// Efl.Ui.Scrollable_Interactive.scroll;
|
||||
Efl.Layout.Signal.signal_callback_add;
|
||||
Efl.Layout.Signal.signal_callback_del;
|
||||
|
|
|
@ -406,6 +406,7 @@ _efl_ui_scroller_efl_object_finalize(Eo *obj,
|
|||
|
||||
sd->smanager = efl_add(EFL_UI_SCROLL_MANAGER_CLASS, obj);
|
||||
efl_ui_mirrored_set(sd->smanager, efl_ui_mirrored_get(obj));
|
||||
efl_composite_attach(obj, sd->smanager);
|
||||
|
||||
sd->pan_obj = efl_add(EFL_UI_PAN_CLASS, obj);
|
||||
|
||||
|
@ -527,68 +528,6 @@ _efl_ui_scroller_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Scroller_Data *sd)
|
|||
return int_ret;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Size2D
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_content_size_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd)
|
||||
{
|
||||
return efl_ui_scrollable_content_size_get(sd->smanager);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Rect
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_viewport_geometry_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd)
|
||||
{
|
||||
return efl_ui_scrollable_viewport_geometry_get(sd->smanager);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_bounce_enabled_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd,
|
||||
Eina_Bool horiz,
|
||||
Eina_Bool vert)
|
||||
{
|
||||
efl_ui_scrollable_bounce_enabled_set(sd->smanager, horiz, vert);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_bounce_enabled_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd,
|
||||
Eina_Bool *horiz,
|
||||
Eina_Bool *vert)
|
||||
{
|
||||
efl_ui_scrollable_bounce_enabled_get(sd->smanager, horiz, vert);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_scroll_hold_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd)
|
||||
{
|
||||
return efl_ui_scrollable_scroll_hold_get(sd->smanager);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_scroll_hold_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd,
|
||||
Eina_Bool hold)
|
||||
{
|
||||
efl_ui_scrollable_scroll_hold_set(sd->smanager, hold);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_scroll_freeze_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd)
|
||||
{
|
||||
return efl_ui_scrollable_scroll_freeze_get(sd->smanager);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_scroll_freeze_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd,
|
||||
Eina_Bool freeze)
|
||||
{
|
||||
efl_ui_scrollable_scroll_freeze_set(sd->smanager, freeze);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_match_content_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd,
|
||||
|
@ -603,33 +542,6 @@ _efl_ui_scroller_efl_ui_scrollable_interactive_match_content_set(Eo *obj EINA_UN
|
|||
elm_layout_sizing_eval(obj);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_scroller_efl_ui_scrollbar_bar_mode_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd,
|
||||
Efl_Ui_Scrollbar_Mode hmode,
|
||||
Efl_Ui_Scrollbar_Mode vmode)
|
||||
{
|
||||
efl_ui_scrollbar_bar_mode_set(sd->smanager, hmode, vmode);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_scroller_efl_ui_scrollbar_bar_mode_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd,
|
||||
Efl_Ui_Scrollbar_Mode *hmode,
|
||||
Efl_Ui_Scrollbar_Mode *vmode)
|
||||
{
|
||||
efl_ui_scrollbar_bar_mode_get(sd->smanager, hmode, vmode);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_scroller_efl_ui_scrollable_interactive_scroll(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Scroller_Data *sd,
|
||||
Eina_Rect rc,
|
||||
Eina_Bool animation)
|
||||
{
|
||||
efl_ui_scrollable_scroll(sd->smanager, rc, animation);
|
||||
}
|
||||
|
||||
/* Internal EO APIs and hidden overrides */
|
||||
|
||||
#define EFL_UI_SCROLLER_EXTRA_OPS \
|
||||
|
|
|
@ -10,13 +10,6 @@ class Efl.Ui.Scroller (Efl.Ui.Layout,
|
|||
Efl.Object.destructor;
|
||||
Efl.Content.content { set; }
|
||||
Efl.Ui.Widget.theme_apply;
|
||||
Efl.Ui.Scrollable_Interactive.content_size{ get; }
|
||||
Efl.Ui.Scrollable_Interactive.viewport_geometry{ get; }
|
||||
Efl.Ui.Scrollable_Interactive.bounce_enabled { set; get; }
|
||||
Efl.Ui.Scrollable_Interactive.scroll_freeze { get; set; }
|
||||
Efl.Ui.Scrollable_Interactive.scroll_hold { get; set; }
|
||||
Efl.Ui.Scrollable_Interactive.match_content { set; }
|
||||
Efl.Ui.Scrollbar.bar_mode { get; set; }
|
||||
Efl.Ui.Scrollable_Interactive.scroll;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2547,9 +2547,19 @@ _efl_ui_widget_show_region_set(Eo *obj, Elm_Widget_Smart_Data *sd, Eina_Rect sr,
|
|||
|
||||
if (_elm_scrollable_is(obj))
|
||||
{
|
||||
elm_interface_scrollable_content_pos_get(obj, &nx, &ny);
|
||||
sr.x -= nx;
|
||||
sr.y -= ny;
|
||||
if (elm_widget_is_legacy(obj))
|
||||
{
|
||||
elm_interface_scrollable_content_pos_get(obj, &nx, &ny);
|
||||
sr.x -= nx;
|
||||
sr.y -= ny;
|
||||
}
|
||||
else
|
||||
{
|
||||
Eina_Position2D pos;
|
||||
pos = efl_ui_scrollable_content_pos_get(obj);
|
||||
sr.x -= pos.x;
|
||||
sr.y -= pos.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue