Elementary: Fix scroller APIs to be usable by all the widgets using the

scrollable interface.
This commit is contained in:
Daniel Zaoui 2013-05-24 16:23:28 +03:00
parent 71bee6ddeb
commit a40bed2a38
4 changed files with 60 additions and 84 deletions

View File

@ -1801,6 +1801,18 @@ _elm_scroll_content_region_show_internal(Evas_Object *obj,
return EINA_TRUE;
}
static void
_elm_scroll_content_region_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
{
Evas_Coord *x = va_arg(*list, Evas_Coord *);
Evas_Coord *y = va_arg(*list, Evas_Coord *);
Evas_Coord *w = va_arg(*list, Evas_Coord *);
Evas_Coord *h = va_arg(*list, Evas_Coord *);
eo_do(obj, elm_scrollable_interface_content_pos_get(x, y));
eo_do(obj, elm_scrollable_interface_content_viewport_size_get(w, h));
}
/* Set should be used for calculated positions, for example, when we move
* because of an animation or because this is the correct position after
* constraints. */
@ -4212,6 +4224,19 @@ _elm_scroll_paging_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
if (pagesize_v) *pagesize_v = sid->pagesize_v;
}
static void
_elm_scroll_page_relative_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
{
Evas_Coord pagesize_h, pagesize_v;
double h_pagerel = va_arg(*list, double);
double v_pagerel = va_arg(*list, double);
eo_do(obj, elm_scrollable_interface_paging_get(NULL, NULL, &pagesize_h, &pagesize_v));
eo_do(obj, elm_scrollable_interface_paging_set(h_pagerel, v_pagerel, pagesize_h, pagesize_v));
}
static void
_elm_scroll_page_scroll_limit_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
@ -4505,6 +4530,7 @@ _elm_scrollable_interface_constructor(Eo_Class *klass)
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET), _elm_scroll_content_pos_get),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_SHOW), _elm_scroll_content_region_show),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_SET), _elm_scroll_content_region_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_GET), _elm_scroll_content_region_get),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_SIZE_GET), _elm_scroll_content_size_get),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_VIEWPORT_SIZE_GET), _elm_scroll_content_viewport_size_get),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT), _elm_scroll_content_min_limit),
@ -4527,6 +4553,7 @@ _elm_scrollable_interface_constructor(Eo_Class *klass)
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_BOUNCE_ALLOW_GET), _elm_scroll_bounce_allow_get),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGING_SET), _elm_scroll_paging_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGING_GET), _elm_scroll_paging_get),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_RELATIVE_SET), _elm_scroll_page_relative_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_SCROLL_LIMIT_SET), _elm_scroll_page_scroll_limit_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_SCROLL_LIMIT_GET), _elm_scroll_page_scroll_limit_get),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CURRENT_PAGE_GET), _elm_scroll_current_page_get),
@ -4581,6 +4608,7 @@ static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_SHOW, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_GET, "Get the currently visible content region."),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_SIZE_GET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_VIEWPORT_SIZE_GET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT, "description here"),
@ -4607,6 +4635,8 @@ static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_BOUNCE_ALLOW_GET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGING_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGING_GET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_RELATIVE_SET,
"Set scroll page size relative to viewport size."),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_SCROLL_LIMIT_SET, "Set the maxium of the movable page at a flicking"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_SCROLL_LIMIT_GET, "Get the maxium of the movable page at a flicking"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CURRENT_PAGE_GET, "description here"),

View File

@ -176,6 +176,7 @@ enum
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_SHOW,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_GET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_SIZE_GET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_VIEWPORT_SIZE_GET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT,
@ -198,6 +199,7 @@ enum
ELM_SCROLLABLE_INTERFACE_SUB_ID_BOUNCE_ALLOW_GET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGING_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGING_GET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_RELATIVE_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_SCROLL_LIMIT_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_SCROLL_LIMIT_GET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CURRENT_PAGE_GET,
@ -529,6 +531,20 @@ enum
*/
#define elm_scrollable_interface_content_region_set(x, y, w, h) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_SET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
/**
* @def elm_scrollable_interface_content_region_get
* @since 1.8
*
* No description supplied by the EAPI.
*
* @param[out] x
* @param[out] y
* @param[out] w
* @param[out] h
*
*/
#define elm_scrollable_interface_content_region_get(x, y, w, h) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_GET), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
/**
* @def elm_scrollable_interface_content_size_get
* @since 1.8
@ -613,6 +629,18 @@ enum
*/
#define elm_scrollable_interface_page_size_get(x, y) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_SIZE_GET), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y)
/**
* @def elm_scrollable_interface_page_relative_set
* @since 1.8
*
* @brief Set scroll page size relative to viewport size.
*
* @param[in] h_pagerel
* @param[in] v_pagerel
*
*/
#define elm_scrollable_interface_page_relative_set(h_pagerel, v_pagerel) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_RELATIVE_SET), EO_TYPECHECK(double, h_pagerel), EO_TYPECHECK(double, v_pagerel)
/**
* @def elm_scrollable_interface_policy_set
* @since 1.8

View File

@ -988,19 +988,7 @@ elm_scroller_region_get(const Evas_Object *obj,
Evas_Coord *h)
{
ELM_SCROLLABLE_CHECK(obj);
eo_do((Eo *) obj, elm_obj_scroller_region_get(x, y, w, h));
}
static void
_region_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
{
Evas_Coord *x = va_arg(*list, Evas_Coord *);
Evas_Coord *y = va_arg(*list, Evas_Coord *);
Evas_Coord *w = va_arg(*list, Evas_Coord *);
Evas_Coord *h = va_arg(*list, Evas_Coord *);
if ((x) || (y)) eo_do((Eo *) obj, elm_scrollable_interface_content_pos_get(x, y));
if ((w) || (h)) eo_do((Eo *) obj, elm_scrollable_interface_content_viewport_size_get(w, h));
eo_do((Eo *) obj, elm_scrollable_interface_content_region_get(x, y, w, h));
}
EAPI void
@ -1009,14 +997,6 @@ elm_scroller_child_size_get(const Evas_Object *obj,
Evas_Coord *h)
{
ELM_SCROLLABLE_CHECK(obj);
eo_do((Eo *) obj, elm_obj_scroller_child_size_get(w, h));
}
static void
_child_size_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
{
Evas_Coord *w = va_arg(*list, Evas_Coord *);
Evas_Coord *h = va_arg(*list, Evas_Coord *);
eo_do((Eo *) obj, elm_scrollable_interface_content_size_get(w, h));
}
@ -1069,20 +1049,8 @@ elm_scroller_page_relative_set(Evas_Object *obj,
double v_pagerel)
{
ELM_SCROLLABLE_CHECK(obj);
eo_do(obj, elm_obj_scroller_page_relative_set(h_pagerel, v_pagerel));
}
static void
_page_relative_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
{
Evas_Coord pagesize_h, pagesize_v;
double h_pagerel = va_arg(*list, double);
double v_pagerel = va_arg(*list, double);
eo_do(obj, elm_scrollable_interface_paging_get(NULL, NULL, &pagesize_h, &pagesize_v));
eo_do(obj, elm_scrollable_interface_paging_set(h_pagerel, v_pagerel, pagesize_h, pagesize_v));
eo_do((Eo *)obj, elm_scrollable_interface_page_relative_set(h_pagerel, v_pagerel));
}
EAPI void
@ -1331,9 +1299,6 @@ _class_constructor(Eo_Class *klass)
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_PAGE_SIZE_SET), _page_size_set),
EO_OP_FUNC(ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_CUSTOM_WIDGET_BASE_THEME_SET), _custom_widget_base_theme_set),
EO_OP_FUNC(ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_REGION_GET), _region_get),
EO_OP_FUNC(ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_CHILD_SIZE_GET), _child_size_get),
EO_OP_FUNC(ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_PAGE_RELATIVE_SET), _page_relative_set),
EO_OP_FUNC(ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_PAGE_SCROLL_LIMIT_SET), _page_scroll_limit_set),
EO_OP_FUNC(ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_PAGE_SCROLL_LIMIT_GET), _page_scroll_limit_get),
EO_OP_FUNC(ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_PROPAGATE_EVENTS_SET), _propagate_events_set),
@ -1347,9 +1312,6 @@ _class_constructor(Eo_Class *klass)
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_OBJ_SCROLLER_SUB_ID_CUSTOM_WIDGET_BASE_THEME_SET, "DEPRECATED: Set custom theme elements for the scroller"),
EO_OP_DESCRIPTION(ELM_OBJ_SCROLLER_SUB_ID_REGION_GET, "Get the currently visible content region."),
EO_OP_DESCRIPTION(ELM_OBJ_SCROLLER_SUB_ID_CHILD_SIZE_GET, "Get the size of the content object."),
EO_OP_DESCRIPTION(ELM_OBJ_SCROLLER_SUB_ID_PAGE_RELATIVE_SET, "Set scroll page size relative to viewport size."),
EO_OP_DESCRIPTION(ELM_OBJ_SCROLLER_SUB_ID_PAGE_SCROLL_LIMIT_SET, "Set the maxium of the movable page at a flicking."),
EO_OP_DESCRIPTION(ELM_OBJ_SCROLLER_SUB_ID_PAGE_SCROLL_LIMIT_GET, "Get the maxium of the movable page at a flicking."),
EO_OP_DESCRIPTION(ELM_OBJ_SCROLLER_SUB_ID_PROPAGATE_EVENTS_SET, "Set event propagation on a scroller."),

View File

@ -12,9 +12,6 @@ extern EAPI Eo_Op ELM_OBJ_SCROLLER_BASE_ID;
enum
{
ELM_OBJ_SCROLLER_SUB_ID_CUSTOM_WIDGET_BASE_THEME_SET,
ELM_OBJ_SCROLLER_SUB_ID_REGION_GET,
ELM_OBJ_SCROLLER_SUB_ID_CHILD_SIZE_GET,
ELM_OBJ_SCROLLER_SUB_ID_PAGE_RELATIVE_SET,
ELM_OBJ_SCROLLER_SUB_ID_PAGE_SCROLL_LIMIT_SET,
ELM_OBJ_SCROLLER_SUB_ID_PAGE_SCROLL_LIMIT_GET,
ELM_OBJ_SCROLLER_SUB_ID_PROPAGATE_EVENTS_SET,
@ -38,47 +35,6 @@ enum
*/
#define elm_obj_scroller_custom_widget_base_theme_set(klass, group) ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_CUSTOM_WIDGET_BASE_THEME_SET), EO_TYPECHECK(const char *, klass), EO_TYPECHECK(const char *, group)
/**
* @def elm_obj_scroller_region_get
* @since 1.8
*
* @brief Get the currently visible content region
*
* @param[out] x
* @param[out] y
* @param[out] w
* @param[out] h
*
* @see elm_scroller_region_get
*/
#define elm_obj_scroller_region_get(x, y, w, h) ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_REGION_GET), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
/**
* @def elm_obj_scroller_child_size_get
* @since 1.8
*
* @brief Get the size of the content object
*
* @param[out] w
* @param[out] h
*
* @see elm_scroller_child_size_get
*/
#define elm_obj_scroller_child_size_get(w, h) ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_CHILD_SIZE_GET), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
/**
* @def elm_obj_scroller_page_relative_set
* @since 1.8
*
* @brief Set scroll page size relative to viewport size.
*
* @param[in] h_pagerel
* @param[in] v_pagerel
*
* @see elm_scroller_page_relative_set
*/
#define elm_obj_scroller_page_relative_set(h_pagerel, v_pagerel) ELM_OBJ_SCROLLER_ID(ELM_OBJ_SCROLLER_SUB_ID_PAGE_RELATIVE_SET), EO_TYPECHECK(double, h_pagerel), EO_TYPECHECK(double, v_pagerel)
/**
* @def elm_obj_scroller_page_scroll_limit_set
* @since 1.8