Add the elm_scrollable_interface_content_viewport_resize_cb_set.

When the viewport is resized, the enrolled function is called.
This commit is contained in:
Jaehwan Kim 2013-06-30 14:42:34 +09:00
parent 0ccfc31ee1
commit d418b27b96
5 changed files with 72 additions and 7 deletions

View File

@ -1468,3 +1468,8 @@
* Fix Segfault in elementary file_selector_example when closed.
https://phab.enlightenment.org/T133
2013-06-30 Jaehwan Kim
* Add the elm_scrollable_interface_content_viewport_resize_cb_set.
When the viewport is resized, the enrolled function is called.

View File

@ -76,6 +76,7 @@ Additions:
* Add "focused" and "unfocused" smart callback for panel, video, web, web2, genlist, hover, index, list, map, photocam, progressbar, radio, scroller, slider, slideshow, spinner, toolbar, win, calendar, check, clock, colorselector, datetime, diskselector, flipselector, gengrid, ctxpopup, fileselector_button, naviframe, player, popup, bubble, button.
* Add elm_web_url_set(), elm_web_url_get() and "url,changed" signal for web, web2.
* Add elm_fileselector_mime_type_filter_append and elm_fileselector_filters_clear to support mime type filter.
* Add the elm_scrollable_interface_content_viewport_resize_cb_set.
Improvements:

View File

@ -117,7 +117,8 @@ _elm_pan_smart_resize(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
psd->h = h;
_elm_pan_update(psd);
evas_object_smart_callback_call(psd->self, SIG_CHANGED, NULL);
evas_object_smart_callback_call(psd->self, SIG_CHANGED,
ELM_OBJ_PAN_SMART_RESIZE);
}
static void
@ -154,7 +155,8 @@ _elm_pan_pos_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
psd->py = y;
_elm_pan_update(psd);
evas_object_smart_callback_call(psd->self, SIG_CHANGED, NULL);
evas_object_smart_callback_call(psd->self, SIG_CHANGED,
ELM_OBJ_PAN_POS_SET);
}
static void
@ -264,7 +266,8 @@ _elm_pan_content_del_cb(void *data,
psd->content = NULL;
psd->content_w = psd->content_h = psd->px = psd->py =
psd->prev_cw = psd->prev_ch = psd->delta_posx = psd->delta_posy = 0;
evas_object_smart_callback_call(psd->self, SIG_CHANGED, NULL);
evas_object_smart_callback_call(psd->self, SIG_CHANGED,
ELM_OBJ_PAN_CONTENT_DEL);
}
static void
@ -284,7 +287,8 @@ _elm_pan_content_resize_cb(void *data,
psd->content_h = h;
_elm_pan_update(psd);
}
evas_object_smart_callback_call(psd->self, SIG_CHANGED, NULL);
evas_object_smart_callback_call(psd->self, SIG_CHANGED,
ELM_OBJ_PAN_CONTENT_RESIZE);
}
static void
@ -326,7 +330,8 @@ _elm_pan_content_set(Evas_Object *obj,
_elm_pan_update(psd);
end:
evas_object_smart_callback_call(psd->self, SIG_CHANGED, NULL);
evas_object_smart_callback_call(psd->self, SIG_CHANGED,
ELM_OBJ_PAN_CONTENT_SET);
}
static void
@ -3619,10 +3624,11 @@ _elm_scroll_scroll_bar_reset(Elm_Scrollable_Smart_Interface_Data *sid)
static void
_elm_scroll_pan_changed_cb(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
void *event_info)
{
Evas_Coord w, h;
Elm_Scrollable_Smart_Interface_Data *sid = data;
Elm_Pan_Callback_Type type = (Elm_Pan_Callback_Type) event_info;
if (!sid->pan_obj) return;
@ -3638,6 +3644,14 @@ _elm_scroll_pan_changed_cb(void *data,
sid->content_info.resized = EINA_TRUE;
_elm_scroll_wanted_region_set(sid->obj);
}
if (type == ELM_OBJ_PAN_SMART_RESIZE)
if (sid->cb_func.content_viewport_resize)
{
eo_do(sid->obj, elm_scrollable_interface_content_viewport_size_get(&w, &h));
sid->cb_func.content_viewport_resize(obj, w, h);
}
}
static void
@ -3919,6 +3933,14 @@ _elm_scroll_content_min_limit_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *li
sid->cb_func.content_min_limit = min_limit_cb;
}
static void
_elm_scroll_content_viewport_resize_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Elm_Scrollable_Smart_Interface_Data *sid = _pd;
Elm_Interface_Scrollable_Resize_Cb viewport_resize_cb = va_arg(*list, Elm_Interface_Scrollable_Resize_Cb);
sid->cb_func.content_viewport_resize = viewport_resize_cb;
}
static void
_elm_scroll_momentum_animator_disabled_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
{
@ -4549,6 +4571,7 @@ _elm_scrollable_interface_constructor(Eo_Class *klass)
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET), _elm_scroll_hbar_press_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET), _elm_scroll_hbar_unpress_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET), _elm_scroll_content_min_limit_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_VIEWPORT_RESIZE_CB_SET), _elm_scroll_content_viewport_resize_cb_set),
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET), _elm_scroll_content_pos_set),
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),
@ -4627,6 +4650,8 @@ static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET, "description here"),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_VIEWPORT_RESIZE_CB_SET,
"When the viewport is resized, the callback is called."),
EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET, "description here"),
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"),

View File

@ -34,6 +34,16 @@
#define ELM_OBJ_PAN_CLASS elm_obj_pan_eo_class_get()
const Eo_Class *elm_obj_pan_eo_class_get(void) EINA_CONST;
typedef enum _Elm_Pan_Callback_Type
{
ELM_OBJ_PAN_SMART_RESIZE,
ELM_OBJ_PAN_POS_SET,
ELM_OBJ_PAN_CONTENT_DEL,
ELM_OBJ_PAN_CONTENT_RESIZE,
ELM_OBJ_PAN_CONTENT_SET,
ELM_OBJ_PAN_LAST
} Elm_Pan_Callback_Type;
extern EAPI Eo_Op ELM_OBJ_PAN_BASE_ID;
enum
@ -172,6 +182,7 @@ enum
ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_VIEWPORT_RESIZE_CB_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET,
ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_REGION_SHOW,
@ -478,6 +489,17 @@ enum
*/
#define elm_scrollable_interface_content_min_limit_cb_set(min_limit_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Min_Limit_Cb, min_limit_cb)
/**
* @def elm_scrollable_interface_content_viewport_resize_cb_set
* @since 1.8
*
* When the viewport is resized, the callback is called.
*
* @param[in] viewport_resize_cb
*
*/
#define elm_scrollable_interface_content_viewport_resize_cb_set(viewport_resize_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_VIEWPORT_RESIZE_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Resize_Cb, viewport_resize_cb)
/**
* @def elm_scrollable_interface_content_pos_set
* @since 1.8
@ -1050,6 +1072,7 @@ struct _Elm_Pan_Smart_Data
*/
typedef void (*Elm_Interface_Scrollable_Cb)(Evas_Object *, void *data);
typedef void (*Elm_Interface_Scrollable_Min_Limit_Cb)(Evas_Object *obj, Eina_Bool w, Eina_Bool h);
typedef void (*Elm_Interface_Scrollable_Resize_Cb)(Evas_Object *obj, Eina_Bool w, Eina_Bool h);
typedef struct _Elm_Scrollable_Smart_Interface_Data
Elm_Scrollable_Smart_Interface_Data;
@ -1163,6 +1186,7 @@ struct _Elm_Scrollable_Smart_Interface_Data
Elm_Interface_Scrollable_Cb page_change;
Elm_Interface_Scrollable_Min_Limit_Cb content_min_limit;
Elm_Interface_Scrollable_Resize_Cb content_viewport_resize;
} cb_func;
struct

View File

@ -749,6 +749,14 @@ _elm_scroller_content_min_limit_cb(Evas_Object *obj,
elm_layout_sizing_eval(obj);
}
static void
_elm_scroller_content_viewport_resize_cb(Evas_Object *obj,
Evas_Coord w EINA_UNUSED,
Evas_Coord h EINA_UNUSED)
{
elm_layout_sizing_eval(obj);
}
static void
_elm_scroller_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
@ -804,7 +812,9 @@ _elm_scroller_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_scrollable_interface_hbar_unpress_cb_set(_hbar_unpress_cb),
elm_scrollable_interface_page_change_cb_set(_page_change_cb),
elm_scrollable_interface_content_min_limit_cb_set
(_elm_scroller_content_min_limit_cb));
(_elm_scroller_content_min_limit_cb),
elm_scrollable_interface_content_viewport_resize_cb_set
(_elm_scroller_content_viewport_resize_cb));
}
static void