2013-04-25 22:13:00 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "elementary_config.h"
|
|
|
|
#endif
|
|
|
|
|
2014-10-17 08:56:11 -07:00
|
|
|
#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
|
|
|
|
#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
|
|
|
|
|
2008-09-29 23:58:56 -07:00
|
|
|
#include <Elementary.h>
|
2013-04-25 22:13:00 -07:00
|
|
|
|
2008-09-29 23:58:56 -07:00
|
|
|
#include "elm_priv.h"
|
2012-11-25 22:32:53 -08:00
|
|
|
#include "elm_interface_scrollable.h"
|
|
|
|
#include "elm_widget_layout.h"
|
2012-07-31 15:05:55 -07:00
|
|
|
#include "elm_widget_scroller.h"
|
2012-11-25 22:32:53 -08:00
|
|
|
|
2014-06-03 03:35:28 -07:00
|
|
|
#define MY_CLASS ELM_SCROLLER_CLASS
|
2012-11-25 22:32:53 -08:00
|
|
|
|
2013-11-07 03:44:22 -08:00
|
|
|
#define MY_CLASS_NAME "Elm_Scroller"
|
|
|
|
#define MY_CLASS_NAME_LEGACY "elm_scroller"
|
2008-09-29 23:58:56 -07:00
|
|
|
|
2013-07-15 16:11:52 -07:00
|
|
|
#define ELM_PRIV_SCROLLER_SIGNALS(cmd) \
|
|
|
|
cmd(SIG_SCROLL, "scroll", "") \
|
|
|
|
cmd(SIG_SCROLL_LEFT, "scroll,left", "") \
|
|
|
|
cmd(SIG_SCROLL_RIGHT, "scroll,right", "") \
|
|
|
|
cmd(SIG_SCROLL_UP, "scroll,up", "") \
|
|
|
|
cmd(SIG_SCROLL_DOWN, "scroll,down", "") \
|
|
|
|
cmd(SIG_SCROLL_ANIM_START, "scroll,anim,start", "") \
|
|
|
|
cmd(SIG_SCROLL_ANIM_STOP, "scroll,anim,stop", "") \
|
|
|
|
cmd(SIG_SCROLL_DRAG_START, "scroll,drag,start", "") \
|
|
|
|
cmd(SIG_SCROLL_DRAG_STOP, "scroll,drag,stop", "") \
|
|
|
|
cmd(SIG_EDGE_LEFT, "edge,left", "") \
|
|
|
|
cmd(SIG_EDGE_RIGHT, "edge,right", "") \
|
|
|
|
cmd(SIG_EDGE_TOP, "edge,top", "") \
|
|
|
|
cmd(SIG_EDGE_BOTTOM, "edge,bottom", "") \
|
|
|
|
cmd(SIG_VBAR_DRAG, "vbar,drag", "") \
|
|
|
|
cmd(SIG_VBAR_PRESS, "vbar,press", "") \
|
|
|
|
cmd(SIG_VBAR_UNPRESS, "vbar,unpress", "") \
|
|
|
|
cmd(SIG_HBAR_DRAG, "hbar,drag", "") \
|
|
|
|
cmd(SIG_HBAR_PRESS, "hbar,press", "") \
|
|
|
|
cmd(SIG_HBAR_UNPRESS, "hbar,unpress", "") \
|
|
|
|
cmd(SIG_SCROLL_PAGE_CHANGE, "scroll,page,changed", "") \
|
2013-05-15 14:56:04 -07:00
|
|
|
|
2013-07-15 16:11:52 -07:00
|
|
|
ELM_PRIV_SCROLLER_SIGNALS(ELM_PRIV_STATIC_VARIABLE_DECLARE);
|
|
|
|
|
|
|
|
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
|
|
|
|
ELM_PRIV_SCROLLER_SIGNALS(ELM_PRIV_SMART_CALLBACKS_DESC)
|
2014-02-05 23:18:57 -08:00
|
|
|
{SIG_LAYOUT_FOCUSED, ""}, /**< handled by elm_layout */
|
|
|
|
{SIG_LAYOUT_UNFOCUSED, ""}, /**< handled by elm_layout */
|
2012-07-04 14:42:35 -07:00
|
|
|
{NULL, NULL}
|
2010-03-26 03:59:56 -07:00
|
|
|
};
|
2013-07-15 16:11:52 -07:00
|
|
|
#undef ELM_PRIV_SCROLLER_SIGNALS
|
2010-03-26 03:59:56 -07:00
|
|
|
|
2014-04-10 01:10:00 -07:00
|
|
|
static Eina_Bool _key_action_move(Evas_Object *obj, const char *params);
|
|
|
|
|
|
|
|
static const Elm_Action key_actions[] = {
|
|
|
|
{"move", _key_action_move},
|
|
|
|
{NULL, NULL}
|
|
|
|
};
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2015-01-23 19:01:03 -08:00
|
|
|
static void
|
|
|
|
_elm_scroller_proxy_set(Evas_Object *obj, Elm_Scroller_Data *sd, Evas_Object *proxy)
|
|
|
|
{
|
|
|
|
Evas_Coord h_pagesize, v_pagesize;
|
|
|
|
Evas_Coord cw, ch;
|
|
|
|
Evas_Object *content = sd->content;
|
|
|
|
|
|
|
|
if (!content) return;
|
|
|
|
|
|
|
|
eo_do(obj, elm_interface_scrollable_paging_get(NULL, NULL, &h_pagesize, &v_pagesize));
|
|
|
|
eo_do(obj, elm_interface_scrollable_content_size_get(&cw, &ch));
|
|
|
|
/* Since Proxy has the texture size limitation problem, we set a key value
|
|
|
|
for evas works in some hackish way to avoid this problem. This hackish
|
|
|
|
code should be removed once evas supports a mechanism like a virtual
|
|
|
|
texture. */
|
|
|
|
evas_object_image_fill_set(proxy, 0, 0, cw, ch);
|
|
|
|
evas_object_size_hint_min_set(proxy, h_pagesize, v_pagesize);
|
|
|
|
evas_object_image_source_clip_set(proxy, EINA_FALSE);
|
|
|
|
evas_object_image_source_set(proxy, content);
|
|
|
|
evas_object_show(proxy);
|
|
|
|
}
|
|
|
|
|
2014-04-10 01:10:00 -07:00
|
|
|
static Eina_Bool
|
|
|
|
_key_action_move(Evas_Object *obj, const char *params)
|
|
|
|
{
|
|
|
|
ELM_SCROLLER_DATA_GET(obj, sd);
|
|
|
|
const char *dir = params;
|
2010-10-01 12:03:07 -07:00
|
|
|
Evas_Coord x = 0;
|
|
|
|
Evas_Coord y = 0;
|
2012-07-04 14:42:35 -07:00
|
|
|
Evas_Coord c_x = 0;
|
|
|
|
Evas_Coord c_y = 0;
|
2010-10-01 12:03:07 -07:00
|
|
|
Evas_Coord v_w = 0;
|
|
|
|
Evas_Coord v_h = 0;
|
2012-07-04 14:42:35 -07:00
|
|
|
Evas_Coord max_x = 0;
|
|
|
|
Evas_Coord max_y = 0;
|
2010-10-01 12:03:07 -07:00
|
|
|
Evas_Coord page_x = 0;
|
|
|
|
Evas_Coord page_y = 0;
|
2012-07-04 14:42:35 -07:00
|
|
|
Evas_Coord step_x = 0;
|
|
|
|
Evas_Coord step_y = 0;
|
2014-04-10 01:10:00 -07:00
|
|
|
Evas_Object *current_focus = NULL;
|
|
|
|
Eina_List *can_focus_list = NULL;
|
|
|
|
Evas_Object *new_focus = NULL;
|
|
|
|
Evas_Coord f_x = 0;
|
|
|
|
Evas_Coord f_y = 0;
|
|
|
|
Evas_Coord f_w = 0;
|
|
|
|
Evas_Coord f_h = 0;
|
2010-10-01 12:03:07 -07:00
|
|
|
|
2012-11-25 22:32:53 -08:00
|
|
|
eo_do(obj,
|
2014-03-17 04:44:40 -07:00
|
|
|
elm_interface_scrollable_content_pos_get(&x, &y),
|
|
|
|
elm_interface_scrollable_step_size_get(&step_x, &step_y),
|
|
|
|
elm_interface_scrollable_page_size_get(&page_x, &page_y),
|
entry: wrong viewport value calculation issue fix
Summary:
Issue: As entire scroller edje co-ordinates was being taken instead of the actual viewport value,
if in scroller edje more parts are added apart from just "elm.swallow.content", then the viewport value
set will be wrong. hence the selection handlers will not hide when they have to hide.
solution: Instead of taking scroller edje's geometry, get the actual viewport values.
To get viewport x,y a new scrollable interface is also added.
signed-off by: Shilpa Singh <shilpa.singh@samsung.com>
@fix
Test Plan: Selection handlers have to hide correctly when the text is scrolled in a scrolled entry, if the scroller edc of entry has more parts added other than elm.swallow.content, then when we scroll the selection handlers are not hidden correctly.
Reviewers: jaehwan, woohyun, seoz, Hermet, raster
CC: govi, rajeshps, thiepha
Differential Revision: https://phab.enlightenment.org/D674
2014-04-20 20:31:49 -07:00
|
|
|
elm_interface_scrollable_content_viewport_geometry_get
|
|
|
|
(NULL, NULL, &v_w, &v_h));
|
2015-04-03 07:04:58 -07:00
|
|
|
evas_object_geometry_get(sd->content, &c_x, &c_y, &max_x, &max_y);
|
2010-10-01 12:03:07 -07:00
|
|
|
|
2014-04-10 01:10:00 -07:00
|
|
|
current_focus = elm_widget_focused_object_get(obj);
|
|
|
|
evas_object_geometry_get(current_focus, &f_x, &f_y, &f_w, &f_h);
|
|
|
|
can_focus_list = elm_widget_can_focus_child_list_get(obj);
|
|
|
|
|
|
|
|
if ((current_focus == obj) ||
|
|
|
|
(!ELM_RECTS_INTERSECT
|
|
|
|
(x, y, v_w, v_h, (f_x - c_x), (f_y - c_y), f_w, f_h)))
|
2012-05-02 20:02:54 -07:00
|
|
|
{
|
2014-04-10 01:10:00 -07:00
|
|
|
Eina_List *l;
|
|
|
|
Evas_Object *cur;
|
|
|
|
double weight = 0.0;
|
|
|
|
|
|
|
|
EINA_LIST_FOREACH(can_focus_list, l, cur)
|
2012-05-02 20:02:54 -07:00
|
|
|
{
|
2014-04-10 01:10:00 -07:00
|
|
|
double cur_weight = 0.0;
|
2012-05-02 20:02:54 -07:00
|
|
|
|
2014-04-10 01:10:00 -07:00
|
|
|
evas_object_geometry_get(cur, &f_x, &f_y, &f_w, &f_h);
|
|
|
|
if (ELM_RECTS_INTERSECT
|
|
|
|
(x, y, v_w, v_h, (f_x - c_x), (f_y - c_y), f_w, f_h))
|
2012-05-02 20:02:54 -07:00
|
|
|
{
|
2014-04-10 01:10:00 -07:00
|
|
|
if ((f_x - c_x) > x)
|
|
|
|
cur_weight += ((f_x - c_x) - x) * ((f_x - c_x) - x);
|
|
|
|
if ((f_y - c_y) > y)
|
|
|
|
cur_weight += ((f_y - c_y) - y) * ((f_y - c_y) - y);
|
|
|
|
if (cur_weight == 0.0)
|
2012-05-02 20:02:54 -07:00
|
|
|
{
|
2014-04-10 01:10:00 -07:00
|
|
|
elm_widget_focus_steal(cur);
|
|
|
|
return EINA_TRUE;
|
|
|
|
}
|
|
|
|
cur_weight = 1.0 / cur_weight;
|
|
|
|
if (cur_weight > weight)
|
|
|
|
{
|
|
|
|
new_focus = cur;
|
|
|
|
weight = cur_weight;
|
2012-05-02 20:02:54 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
if (new_focus)
|
2012-05-02 20:02:54 -07:00
|
|
|
{
|
2014-04-10 01:10:00 -07:00
|
|
|
elm_widget_focus_steal(new_focus);
|
|
|
|
return EINA_TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Eina_Bool r = EINA_FALSE;
|
|
|
|
|
|
|
|
if (!strcmp(dir, "left"))
|
|
|
|
r = elm_widget_focus_next_get(obj, ELM_FOCUS_LEFT, &new_focus);
|
|
|
|
else if (!strcmp(dir, "right"))
|
|
|
|
r = elm_widget_focus_next_get(obj, ELM_FOCUS_RIGHT, &new_focus);
|
|
|
|
else if (!strcmp(dir, "up"))
|
|
|
|
r = elm_widget_focus_next_get(obj, ELM_FOCUS_UP, &new_focus);
|
|
|
|
else if (!strcmp(dir, "down"))
|
|
|
|
r = elm_widget_focus_next_get(obj, ELM_FOCUS_DOWN, &new_focus);
|
|
|
|
|
|
|
|
if (r && new_focus)
|
|
|
|
{
|
|
|
|
Evas_Coord l_x = 0;
|
|
|
|
Evas_Coord l_y = 0;
|
|
|
|
Evas_Coord l_w = 0;
|
|
|
|
Evas_Coord l_h = 0;
|
|
|
|
|
|
|
|
evas_object_geometry_get(new_focus, &f_x, &f_y, &f_w, &f_h);
|
|
|
|
l_x = f_x - c_x - step_x;
|
|
|
|
l_y = f_y - c_y - step_y;
|
|
|
|
l_w = f_w + (step_x * 2);
|
|
|
|
l_h = f_h + (step_y * 2);
|
|
|
|
|
|
|
|
if (ELM_RECTS_INTERSECT(x, y, v_w, v_h, l_x, l_y, l_w, l_h))
|
2012-05-02 20:02:54 -07:00
|
|
|
{
|
2014-04-10 01:10:00 -07:00
|
|
|
elm_widget_focus_steal(new_focus);
|
|
|
|
return EINA_TRUE;
|
2012-05-02 20:02:54 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
if (!strcmp(dir, "left"))
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
if (x <= 0) return EINA_FALSE;
|
2010-10-01 12:03:07 -07:00
|
|
|
x -= step_x;
|
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
else if (!strcmp(dir, "right"))
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
if (x >= (max_x - v_w)) return EINA_FALSE;
|
2010-10-01 12:03:07 -07:00
|
|
|
x += step_x;
|
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
else if (!strcmp(dir, "up"))
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
if (y == 0) return EINA_FALSE;
|
2010-10-01 12:03:07 -07:00
|
|
|
y -= step_y;
|
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
else if (!strcmp(dir, "down"))
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
if (y >= (max_y - v_h)) return EINA_FALSE;
|
2010-10-01 12:03:07 -07:00
|
|
|
y += step_y;
|
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
else if (!strcmp(dir, "first"))
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
|
|
|
y = 0;
|
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
else if (!strcmp(dir, "last"))
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
|
|
|
y = max_y - v_h;
|
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
else if (!strcmp(dir, "prior"))
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2011-04-01 04:24:15 -07:00
|
|
|
if (page_y < 0)
|
|
|
|
y -= -(page_y * v_h) / 100;
|
|
|
|
else
|
|
|
|
y -= page_y;
|
2010-10-01 12:03:07 -07:00
|
|
|
}
|
2014-04-10 01:10:00 -07:00
|
|
|
else if (!strcmp(dir, "next"))
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2011-04-01 04:24:15 -07:00
|
|
|
if (page_y < 0)
|
|
|
|
y += -(page_y * v_h) / 100;
|
|
|
|
else
|
|
|
|
y += page_y;
|
2010-10-01 12:03:07 -07:00
|
|
|
}
|
2014-03-26 01:54:49 -07:00
|
|
|
else return EINA_FALSE;
|
2010-10-01 12:03:07 -07:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_content_pos_set(x, y, EINA_TRUE));
|
2014-04-10 01:10:00 -07:00
|
|
|
return EINA_TRUE;
|
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-04-10 01:10:00 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_elm_widget_event(Eo *obj, Elm_Scroller_Data *sd EINA_UNUSED, Evas_Object *src, Evas_Callback_Type type, void *event_info)
|
|
|
|
{
|
|
|
|
(void) src;
|
|
|
|
Evas_Event_Key_Down *ev = event_info;
|
|
|
|
|
|
|
|
if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
|
|
|
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
|
|
|
|
|
|
|
|
if (!_elm_config_key_binding_call(obj, ev, key_actions))
|
|
|
|
return EINA_FALSE;
|
|
|
|
|
|
|
|
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
2014-03-26 01:54:49 -07:00
|
|
|
return EINA_TRUE;
|
2010-10-01 12:03:07 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_elm_widget_activate(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, Elm_Activate act)
|
2012-09-16 20:01:46 -07:00
|
|
|
{
|
|
|
|
Evas_Coord x = 0;
|
|
|
|
Evas_Coord y = 0;
|
|
|
|
Evas_Coord v_w = 0;
|
|
|
|
Evas_Coord v_h = 0;
|
|
|
|
Evas_Coord page_x = 0;
|
|
|
|
Evas_Coord page_y = 0;
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
if (elm_widget_disabled_get(obj)) return EINA_FALSE;
|
|
|
|
if (act == ELM_ACTIVATE_DEFAULT) return EINA_FALSE;
|
2012-09-16 20:01:46 -07:00
|
|
|
|
2012-11-25 22:32:53 -08:00
|
|
|
eo_do(obj,
|
2014-03-17 04:44:40 -07:00
|
|
|
elm_interface_scrollable_content_pos_get(&x, &y),
|
|
|
|
elm_interface_scrollable_page_size_get(&page_x, &page_y),
|
entry: wrong viewport value calculation issue fix
Summary:
Issue: As entire scroller edje co-ordinates was being taken instead of the actual viewport value,
if in scroller edje more parts are added apart from just "elm.swallow.content", then the viewport value
set will be wrong. hence the selection handlers will not hide when they have to hide.
solution: Instead of taking scroller edje's geometry, get the actual viewport values.
To get viewport x,y a new scrollable interface is also added.
signed-off by: Shilpa Singh <shilpa.singh@samsung.com>
@fix
Test Plan: Selection handlers have to hide correctly when the text is scrolled in a scrolled entry, if the scroller edc of entry has more parts added other than elm.swallow.content, then when we scroll the selection handlers are not hidden correctly.
Reviewers: jaehwan, woohyun, seoz, Hermet, raster
CC: govi, rajeshps, thiepha
Differential Revision: https://phab.enlightenment.org/D674
2014-04-20 20:31:49 -07:00
|
|
|
elm_interface_scrollable_content_viewport_geometry_get
|
|
|
|
(NULL, NULL, &v_w, &v_h));
|
2012-09-16 20:01:46 -07:00
|
|
|
|
|
|
|
if (act == ELM_ACTIVATE_UP)
|
|
|
|
{
|
|
|
|
if (page_y < 0)
|
|
|
|
y -= -(page_y * v_h) / 100;
|
|
|
|
else
|
|
|
|
y -= page_y;
|
|
|
|
}
|
|
|
|
else if (act == ELM_ACTIVATE_DOWN)
|
|
|
|
{
|
|
|
|
if (page_y < 0)
|
|
|
|
y += -(page_y * v_h) / 100;
|
|
|
|
else
|
|
|
|
y += page_y;
|
|
|
|
}
|
|
|
|
else if (act == ELM_ACTIVATE_LEFT)
|
|
|
|
{
|
|
|
|
if (page_x < 0)
|
|
|
|
x -= -(page_x * v_w) / 100;
|
|
|
|
else
|
|
|
|
x -= page_x;
|
|
|
|
}
|
|
|
|
else if (act == ELM_ACTIVATE_RIGHT)
|
|
|
|
{
|
|
|
|
if (page_x < 0)
|
|
|
|
x += -(page_x * v_w) / 100;
|
|
|
|
else
|
|
|
|
x += page_x;
|
|
|
|
}
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_content_pos_set(x, y, EINA_TRUE));
|
2014-03-26 01:54:49 -07:00
|
|
|
|
|
|
|
return EINA_TRUE;
|
2012-09-16 20:01:46 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_elm_scroller_elm_layout_sizing_eval(Eo *obj, Elm_Scroller_Data *sd)
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
Evas_Coord vw = 0, vh = 0, minw = 0, minh = 0, maxw = 0, maxh = 0, w, h,
|
|
|
|
vmw, vmh;
|
2015-01-23 19:01:03 -08:00
|
|
|
Evas_Coord h_pagesize, v_pagesize;
|
2012-07-04 14:42:35 -07:00
|
|
|
double xw = 0.0, yw = 0.0;
|
2015-01-23 19:01:03 -08:00
|
|
|
int i;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2013-10-05 01:15:27 -07:00
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
if (sd->content)
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_size_hint_min_get(sd->content, &minw, &minh);
|
|
|
|
evas_object_size_hint_max_get(sd->content, &maxw, &maxh);
|
|
|
|
evas_object_size_hint_weight_get(sd->content, &xw, &yw);
|
2010-10-01 12:03:07 -07:00
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
entry: wrong viewport value calculation issue fix
Summary:
Issue: As entire scroller edje co-ordinates was being taken instead of the actual viewport value,
if in scroller edje more parts are added apart from just "elm.swallow.content", then the viewport value
set will be wrong. hence the selection handlers will not hide when they have to hide.
solution: Instead of taking scroller edje's geometry, get the actual viewport values.
To get viewport x,y a new scrollable interface is also added.
signed-off by: Shilpa Singh <shilpa.singh@samsung.com>
@fix
Test Plan: Selection handlers have to hide correctly when the text is scrolled in a scrolled entry, if the scroller edc of entry has more parts added other than elm.swallow.content, then when we scroll the selection handlers are not hidden correctly.
Reviewers: jaehwan, woohyun, seoz, Hermet, raster
CC: govi, rajeshps, thiepha
Differential Revision: https://phab.enlightenment.org/D674
2014-04-20 20:31:49 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_content_viewport_geometry_get
|
|
|
|
(NULL, NULL, &vw, &vh));
|
2012-07-04 14:42:35 -07:00
|
|
|
if (xw > 0.0)
|
2010-10-01 12:03:07 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
if ((minw > 0) && (vw < minw))
|
|
|
|
vw = minw;
|
|
|
|
else if ((maxw > 0) && (vw > maxw))
|
|
|
|
vw = maxw;
|
2010-10-01 12:03:07 -07:00
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
else if (minw > 0)
|
|
|
|
vw = minw;
|
2010-10-01 12:03:07 -07:00
|
|
|
|
2012-07-04 14:42:35 -07:00
|
|
|
if (yw > 0.0)
|
|
|
|
{
|
|
|
|
if ((minh > 0) && (vh < minh))
|
|
|
|
vh = minh;
|
|
|
|
else if ((maxh > 0) && (vh > maxh))
|
|
|
|
vh = maxh;
|
|
|
|
}
|
|
|
|
else if (minh > 0)
|
|
|
|
vh = minh;
|
|
|
|
|
|
|
|
if (sd->content) evas_object_resize(sd->content, vw, vh);
|
2015-01-23 19:01:03 -08:00
|
|
|
if (sd->contents) evas_object_resize(sd->contents, vw, vh);
|
|
|
|
|
|
|
|
for (i = 0 ; i < 3 ; i++)
|
|
|
|
{
|
|
|
|
if (!sd->proxy_content[i]) continue;
|
|
|
|
eo_do((Eo *)obj, elm_interface_scrollable_paging_get(NULL, NULL, &h_pagesize, &v_pagesize));
|
|
|
|
evas_object_image_fill_set(sd->proxy_content[i], 0, 0, vw, vh);
|
|
|
|
evas_object_size_hint_min_set(sd->proxy_content[i],
|
|
|
|
h_pagesize, v_pagesize);
|
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
w = -1;
|
|
|
|
h = -1;
|
2013-11-28 08:33:46 -08:00
|
|
|
vmw = vmh = 0;
|
2012-11-25 22:32:53 -08:00
|
|
|
edje_object_size_min_calc(wd->resize_obj, &vmw, &vmh);
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
if (sd->min_w) w = vmw + minw;
|
|
|
|
if (sd->min_h) h = vmh + minh;
|
2012-07-24 19:39:33 -07:00
|
|
|
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_size_hint_max_get(obj, &maxw, &maxh);
|
|
|
|
if ((maxw > 0) && (w > maxw)) w = maxw;
|
|
|
|
if ((maxh > 0) && (h > maxh)) h = maxh;
|
|
|
|
|
|
|
|
evas_object_size_hint_min_set(obj, w, h);
|
2008-09-29 23:58:56 -07:00
|
|
|
}
|
|
|
|
|
2011-02-08 04:08:28 -08:00
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_mirrored_set(Evas_Object *obj,
|
|
|
|
Eina_Bool mirrored)
|
2011-02-08 04:08:28 -08:00
|
|
|
{
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_mirrored_set(mirrored));
|
2011-02-08 04:08:28 -08:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_elm_widget_theme_apply(Eo *obj, Elm_Scroller_Data *sd EINA_UNUSED)
|
2008-11-15 05:58:50 -08:00
|
|
|
{
|
2014-04-12 09:58:43 -07:00
|
|
|
Eina_Bool int_ret = EINA_FALSE;
|
2014-04-03 08:50:15 -07:00
|
|
|
eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_theme_apply());
|
2014-03-26 01:54:49 -07:00
|
|
|
if (!int_ret) return EINA_FALSE;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
_mirrored_set(obj, elm_widget_mirrored_get(obj));
|
|
|
|
|
|
|
|
elm_layout_sizing_eval(obj);
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
return EINA_TRUE;
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Scroller_Data *_pd EINA_UNUSED)
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
return EINA_TRUE;
|
2008-11-15 05:58:50 -08:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_elm_widget_focus_next(Eo *obj EINA_UNUSED, Elm_Scroller_Data *sd, Elm_Focus_Direction dir, Evas_Object **next)
|
2010-09-24 07:47:59 -07:00
|
|
|
{
|
2010-09-27 14:13:25 -07:00
|
|
|
Evas_Object *cur;
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
if (!sd->content) return EINA_FALSE;
|
2010-09-27 14:13:25 -07:00
|
|
|
|
2012-07-04 14:42:35 -07:00
|
|
|
cur = sd->content;
|
|
|
|
|
2013-02-05 20:45:31 -08:00
|
|
|
/* access */
|
|
|
|
if (_elm_config->access_mode)
|
|
|
|
{
|
|
|
|
if ((elm_widget_can_focus_get(cur)) ||
|
|
|
|
(elm_widget_child_can_focus_get(cur)))
|
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
return elm_widget_focus_next_get(cur, dir, next);
|
2013-02-05 20:45:31 -08:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
return EINA_FALSE;
|
2013-02-05 20:45:31 -08:00
|
|
|
}
|
|
|
|
|
2012-07-04 14:42:35 -07:00
|
|
|
/* Try focus cycle in subitem */
|
2012-01-11 20:52:44 -08:00
|
|
|
if (elm_widget_focus_get(obj))
|
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
if ((elm_widget_can_focus_get(cur)) ||
|
|
|
|
(elm_widget_child_can_focus_get(cur)))
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
return elm_widget_focus_next_get(cur, dir, next);
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
2012-01-11 20:52:44 -08:00
|
|
|
}
|
2010-10-06 13:24:09 -07:00
|
|
|
|
|
|
|
/* Return */
|
2010-10-06 13:24:19 -07:00
|
|
|
*next = (Evas_Object *)obj;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
return !elm_widget_focus_get(obj);
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Scroller_Data *_pd EINA_UNUSED)
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
return EINA_FALSE;
|
2010-09-24 07:47:59 -07:00
|
|
|
}
|
|
|
|
|
2010-06-15 08:04:05 -07:00
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_show_region_hook(void *data,
|
|
|
|
Evas_Object *content_obj)
|
2010-06-15 08:04:05 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
Evas_Coord x, y, w, h;
|
2010-06-15 08:04:05 -07:00
|
|
|
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_widget_show_region_get(content_obj, &x, &y, &w, &h);
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(data, elm_interface_scrollable_content_region_show(x, y, w, h));
|
2010-09-09 11:53:36 -07:00
|
|
|
}
|
|
|
|
|
2010-10-22 11:29:51 -07:00
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_changed_size_hints_cb(void *data,
|
2014-01-06 06:30:02 -08:00
|
|
|
Evas *e EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
2010-10-22 11:29:51 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_layout_sizing_eval(data);
|
2010-10-22 11:29:51 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_elm_widget_sub_object_del(Eo *obj, Elm_Scroller_Data *sd, Evas_Object *sobj)
|
2008-09-29 23:58:56 -07:00
|
|
|
{
|
2014-04-12 09:58:43 -07:00
|
|
|
Eina_Bool int_ret = EINA_FALSE;
|
2014-04-03 08:50:15 -07:00
|
|
|
eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_sub_object_del(sobj));
|
2014-03-26 01:54:49 -07:00
|
|
|
if (!int_ret) return EINA_FALSE;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
if (sobj == sd->content)
|
2008-09-29 23:58:56 -07:00
|
|
|
{
|
2014-03-21 22:40:48 -07:00
|
|
|
if (elm_widget_is(sobj))
|
|
|
|
elm_widget_on_show_region_hook_set(sd->content, NULL, NULL);
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
sd->content = NULL;
|
2008-09-29 23:58:56 -07:00
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
return EINA_TRUE;
|
2008-09-29 23:58:56 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_resize_cb(void *data,
|
2014-01-06 06:30:02 -08:00
|
|
|
Evas *e EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
2008-09-29 23:58:56 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_layout_sizing_eval(data);
|
2008-09-29 23:58:56 -07:00
|
|
|
}
|
|
|
|
|
2008-10-06 23:55:11 -07:00
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_edge_left_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2008-10-06 23:55:11 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_EDGE_LEFT, NULL);
|
2008-10-06 23:55:11 -07:00
|
|
|
}
|
|
|
|
|
2009-03-20 08:08:33 -07:00
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_edge_right_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2009-03-20 08:08:33 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_EDGE_RIGHT, NULL);
|
2009-03-20 08:08:33 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_edge_top_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2009-03-20 08:08:33 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_EDGE_TOP, NULL);
|
2009-03-20 08:08:33 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_edge_bottom_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2009-03-20 08:08:33 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_EDGE_BOTTOM, NULL);
|
2009-03-20 08:08:33 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_scroll_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2009-03-20 08:08:33 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL, NULL);
|
2009-03-20 08:08:33 -07:00
|
|
|
}
|
|
|
|
|
2013-03-15 02:53:17 -07:00
|
|
|
static void
|
|
|
|
_scroll_left_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2013-03-15 02:53:17 -07:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_LEFT, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_scroll_right_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2013-03-15 02:53:17 -07:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_RIGHT, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_scroll_up_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2013-03-15 02:53:17 -07:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_UP, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_scroll_down_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2013-03-15 02:53:17 -07:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_DOWN, NULL);
|
|
|
|
}
|
|
|
|
|
2008-09-29 23:58:56 -07:00
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_scroll_anim_start_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2008-09-29 23:58:56 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_ANIM_START, NULL);
|
2008-09-29 23:58:56 -07:00
|
|
|
}
|
|
|
|
|
2009-05-08 04:27:32 -07:00
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_scroll_anim_stop_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2009-05-08 04:27:32 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_ANIM_STOP, NULL);
|
2009-05-08 04:27:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_scroll_drag_start_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2009-05-08 04:27:32 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_DRAG_START, NULL);
|
2009-05-08 04:27:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2012-07-04 14:42:35 -07:00
|
|
|
_scroll_drag_stop_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2009-05-08 04:27:32 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_DRAG_STOP, NULL);
|
2009-05-08 04:27:32 -07:00
|
|
|
}
|
|
|
|
|
Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
SVN revision: 83703
2013-02-06 22:13:31 -08:00
|
|
|
static void
|
|
|
|
_vbar_drag_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
SVN revision: 83703
2013-02-06 22:13:31 -08:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_VBAR_DRAG, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_vbar_press_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
SVN revision: 83703
2013-02-06 22:13:31 -08:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_VBAR_PRESS, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_vbar_unpress_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
SVN revision: 83703
2013-02-06 22:13:31 -08:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_VBAR_UNPRESS, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_hbar_drag_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
SVN revision: 83703
2013-02-06 22:13:31 -08:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_HBAR_DRAG, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_hbar_press_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
SVN revision: 83703
2013-02-06 22:13:31 -08:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_HBAR_PRESS, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_hbar_unpress_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
SVN revision: 83703
2013-02-06 22:13:31 -08:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_HBAR_UNPRESS, NULL);
|
|
|
|
}
|
|
|
|
|
2013-05-15 14:56:04 -07:00
|
|
|
static void
|
|
|
|
_page_change_cb(Evas_Object *obj,
|
2014-01-06 06:30:02 -08:00
|
|
|
void *data EINA_UNUSED)
|
2013-05-15 14:56:04 -07:00
|
|
|
{
|
|
|
|
evas_object_smart_callback_call(obj, SIG_SCROLL_PAGE_CHANGE, NULL);
|
|
|
|
}
|
|
|
|
|
2015-01-23 19:01:03 -08:00
|
|
|
static void
|
|
|
|
_loop_content_set(Evas_Object *obj, Elm_Scroller_Data *sd, Evas_Object *content)
|
|
|
|
{
|
|
|
|
if (!sd->contents)
|
|
|
|
{
|
|
|
|
sd->contents = elm_layout_add(obj);
|
|
|
|
evas_object_smart_member_add(sd->contents, obj);
|
2015-04-06 23:04:52 -07:00
|
|
|
if (!elm_layout_theme_set(sd->contents, "scroller", "contents", elm_widget_style_get(obj)))
|
|
|
|
CRI("Failed to set layout!");
|
|
|
|
|
2015-01-23 19:01:03 -08:00
|
|
|
evas_object_size_hint_weight_set(sd->contents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(sd->contents, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
|
|
|
|
elm_widget_sub_object_add(obj, sd->contents);
|
|
|
|
elm_widget_on_show_region_hook_set(sd->contents, _show_region_hook, obj);
|
|
|
|
}
|
|
|
|
elm_object_part_content_set(sd->contents, "elm.swallow.content", content);
|
|
|
|
sd->content = content;
|
|
|
|
|
|
|
|
if (sd->loop_h)
|
|
|
|
{
|
|
|
|
if (!sd->proxy_content[0])
|
|
|
|
sd->proxy_content[0] =
|
|
|
|
evas_object_image_add(evas_object_evas_get(sd->contents));
|
|
|
|
_elm_scroller_proxy_set(obj, sd, sd->proxy_content[0]);
|
|
|
|
elm_object_part_content_set(sd->contents, "elm.swallow.content_r",
|
|
|
|
sd->proxy_content[0]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sd->loop_v)
|
|
|
|
{
|
|
|
|
if (!sd->proxy_content[1])
|
|
|
|
sd->proxy_content[1] =
|
|
|
|
evas_object_image_add(evas_object_evas_get(sd->contents));
|
|
|
|
_elm_scroller_proxy_set(obj, sd, sd->proxy_content[1]);
|
|
|
|
elm_object_part_content_set(sd->contents, "elm.swallow.content_b",
|
|
|
|
sd->proxy_content[1]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sd->loop_h && sd->loop_v)
|
|
|
|
{
|
|
|
|
if (!sd->proxy_content[2])
|
|
|
|
sd->proxy_content[2] =
|
|
|
|
evas_object_image_add(evas_object_evas_get(sd->contents));
|
|
|
|
_elm_scroller_proxy_set(obj, sd, sd->proxy_content[2]);
|
|
|
|
elm_object_part_content_set(sd->contents, "elm.swallow.content_rb",
|
|
|
|
sd->proxy_content[2]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_elm_container_content_set(Eo *obj, Elm_Scroller_Data *sd, const char *part, Evas_Object *content)
|
2009-05-08 04:27:32 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
if (part && strcmp(part, "default"))
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2014-04-03 08:50:15 -07:00
|
|
|
Eina_Bool int_ret = EINA_FALSE;
|
|
|
|
eo_do_super(obj, MY_CLASS, int_ret = elm_obj_container_content_set(part, content));
|
2014-03-26 01:54:49 -07:00
|
|
|
return int_ret;
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
if (sd->content == content) return EINA_TRUE;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-01-21 17:38:55 -08:00
|
|
|
evas_object_del(sd->content);
|
2012-07-04 14:42:35 -07:00
|
|
|
sd->content = content;
|
|
|
|
|
|
|
|
if (content)
|
|
|
|
{
|
2014-03-19 10:13:03 -07:00
|
|
|
if (elm_widget_is(content))
|
|
|
|
elm_widget_on_show_region_hook_set(content, _show_region_hook, obj);
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_widget_sub_object_add(obj, content);
|
|
|
|
|
2015-01-23 19:01:03 -08:00
|
|
|
if (sd->loop_h || sd->loop_v)
|
|
|
|
{
|
|
|
|
_loop_content_set(obj, sd, content);
|
|
|
|
if(sd->contents)
|
|
|
|
content = sd->contents;
|
|
|
|
}
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_content_set(content));
|
2012-07-04 14:42:35 -07:00
|
|
|
}
|
2015-01-23 19:01:03 -08:00
|
|
|
else
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
for (i = 0; i < 3; i ++)
|
|
|
|
{
|
|
|
|
if (!sd->proxy_content[i]) continue;
|
|
|
|
evas_object_del(sd->proxy_content[i]);
|
|
|
|
sd->proxy_content[i] = NULL;
|
|
|
|
}
|
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
elm_layout_sizing_eval(obj);
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
return EINA_TRUE;
|
2009-05-08 04:27:32 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Evas_Object*
|
|
|
|
_elm_scroller_elm_container_content_get(Eo *obj, Elm_Scroller_Data *sd, const char *part)
|
2009-05-08 04:27:32 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
if (part && strcmp(part, "default"))
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2014-04-03 08:50:15 -07:00
|
|
|
Evas_Object *ret = NULL;
|
|
|
|
eo_do_super(obj, MY_CLASS, ret = elm_obj_container_content_get(part));
|
2014-03-26 01:54:49 -07:00
|
|
|
return ret;
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
return sd->content;
|
2009-05-08 04:27:32 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Evas_Object*
|
|
|
|
_elm_scroller_elm_container_content_unset(Eo *obj, Elm_Scroller_Data *sd, const char *part)
|
2009-09-01 03:42:52 -07:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
Evas_Object *ret = NULL;
|
2012-07-04 14:42:35 -07:00
|
|
|
if (part && strcmp(part, "default"))
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2014-04-03 08:50:15 -07:00
|
|
|
eo_do_super(obj, MY_CLASS, ret = elm_obj_container_content_unset(part));
|
2014-03-26 01:54:49 -07:00
|
|
|
return ret;
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
if (!sd->content) return NULL;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
ret = sd->content;
|
2015-01-23 19:01:03 -08:00
|
|
|
if (sd->loop_h || sd->loop_v)
|
|
|
|
elm_widget_sub_object_del(obj, sd->contents);
|
|
|
|
else
|
|
|
|
elm_widget_sub_object_del(obj, sd->content);
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_content_set(NULL));
|
2012-07-04 14:42:35 -07:00
|
|
|
sd->content = NULL;
|
2014-03-26 01:54:49 -07:00
|
|
|
|
|
|
|
return ret;
|
2009-09-01 03:42:52 -07:00
|
|
|
}
|
|
|
|
|
2012-07-17 07:56:44 -07:00
|
|
|
static void
|
|
|
|
_elm_scroller_content_min_limit_cb(Evas_Object *obj,
|
|
|
|
Eina_Bool w,
|
|
|
|
Eina_Bool h)
|
|
|
|
{
|
|
|
|
ELM_SCROLLER_DATA_GET(obj, sd);
|
|
|
|
|
|
|
|
sd->min_w = !!w;
|
|
|
|
sd->min_h = !!h;
|
|
|
|
|
|
|
|
elm_layout_sizing_eval(obj);
|
|
|
|
}
|
|
|
|
|
2013-06-29 22:42:34 -07:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
2014-06-03 03:35:28 -07:00
|
|
|
_elm_scroller_evas_object_smart_add(Eo *obj, Elm_Scroller_Data *priv)
|
2009-09-01 03:42:52 -07:00
|
|
|
{
|
2013-10-05 01:15:27 -07:00
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
2013-09-24 21:33:39 -07:00
|
|
|
Evas_Coord minw, minh;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2013-03-18 09:07:38 -07:00
|
|
|
eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
|
2013-09-24 21:33:39 -07:00
|
|
|
elm_widget_sub_object_parent_add(obj);
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_widget_can_focus_set(obj, EINA_TRUE);
|
2012-07-17 07:56:44 -07:00
|
|
|
|
2013-03-01 18:04:31 -08:00
|
|
|
if (!elm_layout_theme_set
|
|
|
|
(obj, "scroller", "base", elm_widget_style_get(obj)))
|
2013-12-25 20:03:55 -08:00
|
|
|
CRI("Failed to set layout!");
|
2012-07-17 07:56:44 -07:00
|
|
|
|
|
|
|
priv->hit_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
|
|
|
|
evas_object_smart_member_add(priv->hit_rect, obj);
|
|
|
|
elm_widget_sub_object_add(obj, priv->hit_rect);
|
|
|
|
|
|
|
|
evas_object_color_set(priv->hit_rect, 0, 0, 0, 0);
|
|
|
|
evas_object_show(priv->hit_rect);
|
|
|
|
evas_object_repeat_events_set(priv->hit_rect, EINA_TRUE);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_objects_set(wd->resize_obj, priv->hit_rect));
|
2012-07-17 07:56:44 -07:00
|
|
|
|
|
|
|
evas_object_event_callback_add
|
|
|
|
(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints_cb, obj);
|
|
|
|
|
2012-11-25 22:32:53 -08:00
|
|
|
edje_object_size_min_calc(wd->resize_obj, &minw, &minh);
|
2012-07-17 07:56:44 -07:00
|
|
|
evas_object_size_hint_min_set(obj, minw, minh);
|
|
|
|
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize_cb, obj);
|
|
|
|
|
2012-11-25 22:32:53 -08:00
|
|
|
eo_do(obj,
|
2014-03-17 04:44:40 -07:00
|
|
|
elm_interface_scrollable_edge_left_cb_set(_edge_left_cb),
|
|
|
|
elm_interface_scrollable_edge_right_cb_set(_edge_right_cb),
|
|
|
|
elm_interface_scrollable_edge_top_cb_set(_edge_top_cb),
|
|
|
|
elm_interface_scrollable_edge_bottom_cb_set(_edge_bottom_cb),
|
|
|
|
elm_interface_scrollable_scroll_cb_set(_scroll_cb),
|
|
|
|
elm_interface_scrollable_scroll_left_cb_set(_scroll_left_cb),
|
|
|
|
elm_interface_scrollable_scroll_right_cb_set(_scroll_right_cb),
|
|
|
|
elm_interface_scrollable_scroll_up_cb_set(_scroll_up_cb),
|
|
|
|
elm_interface_scrollable_scroll_down_cb_set(_scroll_down_cb),
|
|
|
|
elm_interface_scrollable_animate_start_cb_set(_scroll_anim_start_cb),
|
|
|
|
elm_interface_scrollable_animate_stop_cb_set(_scroll_anim_stop_cb),
|
|
|
|
elm_interface_scrollable_drag_start_cb_set(_scroll_drag_start_cb),
|
|
|
|
elm_interface_scrollable_drag_stop_cb_set(_scroll_drag_stop_cb),
|
|
|
|
elm_interface_scrollable_vbar_drag_cb_set(_vbar_drag_cb),
|
|
|
|
elm_interface_scrollable_vbar_press_cb_set(_vbar_press_cb),
|
|
|
|
elm_interface_scrollable_vbar_unpress_cb_set(_vbar_unpress_cb),
|
|
|
|
elm_interface_scrollable_hbar_drag_cb_set(_hbar_drag_cb),
|
|
|
|
elm_interface_scrollable_hbar_press_cb_set(_hbar_press_cb),
|
|
|
|
elm_interface_scrollable_hbar_unpress_cb_set(_hbar_unpress_cb),
|
|
|
|
elm_interface_scrollable_page_change_cb_set(_page_change_cb),
|
|
|
|
elm_interface_scrollable_content_min_limit_cb_set
|
2013-06-29 22:42:34 -07:00
|
|
|
(_elm_scroller_content_min_limit_cb),
|
2014-03-17 04:44:40 -07:00
|
|
|
elm_interface_scrollable_content_viewport_resize_cb_set
|
2013-06-29 22:42:34 -07:00
|
|
|
(_elm_scroller_content_viewport_resize_cb));
|
2009-09-01 03:42:52 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
2014-06-03 03:35:28 -07:00
|
|
|
_elm_scroller_evas_object_smart_move(Eo *obj, Elm_Scroller_Data *sd, Evas_Coord x, Evas_Coord y)
|
2009-09-01 03:42:52 -07:00
|
|
|
{
|
2013-03-18 09:07:38 -07:00
|
|
|
eo_do_super(obj, MY_CLASS, evas_obj_smart_move(x, y));
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
evas_object_move(sd->hit_rect, x, y);
|
2009-09-01 03:42:52 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
2014-06-03 03:35:28 -07:00
|
|
|
_elm_scroller_evas_object_smart_resize(Eo *obj, Elm_Scroller_Data *sd, Evas_Coord w, Evas_Coord h)
|
2009-09-01 03:42:52 -07:00
|
|
|
{
|
2013-03-18 09:07:38 -07:00
|
|
|
eo_do_super(obj, MY_CLASS, evas_obj_smart_resize(w, h));
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
evas_object_resize(sd->hit_rect, w, h);
|
2011-10-30 19:56:03 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
2014-06-03 03:35:28 -07:00
|
|
|
_elm_scroller_evas_object_smart_member_add(Eo *obj, Elm_Scroller_Data *sd, Evas_Object *member)
|
2012-07-04 14:42:35 -07:00
|
|
|
{
|
2013-03-18 09:07:38 -07:00
|
|
|
eo_do_super(obj, MY_CLASS, evas_obj_smart_member_add(member));
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
if (sd->hit_rect)
|
|
|
|
evas_object_raise(sd->hit_rect);
|
2011-10-30 19:56:03 -07:00
|
|
|
}
|
|
|
|
|
2008-10-06 18:23:49 -07:00
|
|
|
EAPI Evas_Object *
|
|
|
|
elm_scroller_add(Evas_Object *parent)
|
2008-09-29 23:58:56 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
|
2012-11-25 22:32:53 -08:00
|
|
|
Evas_Object *obj = eo_add(MY_CLASS, parent);
|
|
|
|
return obj;
|
|
|
|
}
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2015-05-19 05:34:07 -07:00
|
|
|
EOLIAN static Eo *
|
2014-03-26 01:54:49 -07:00
|
|
|
_elm_scroller_eo_base_constructor(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED)
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2015-05-19 05:34:07 -07:00
|
|
|
obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
|
2012-11-25 22:32:53 -08:00
|
|
|
eo_do(obj,
|
2013-11-07 03:44:22 -08:00
|
|
|
evas_obj_type_set(MY_CLASS_NAME_LEGACY),
|
2014-06-10 19:07:15 -07:00
|
|
|
evas_obj_smart_callbacks_descriptions_set(_smart_callbacks),
|
|
|
|
elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_SCROLL_PANE));
|
2015-05-19 05:34:07 -07:00
|
|
|
|
|
|
|
return obj;
|
2008-10-06 18:23:49 -07:00
|
|
|
}
|
2008-09-29 23:58:56 -07:00
|
|
|
|
2012-07-04 14:42:35 -07:00
|
|
|
/* deprecated */
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_elm_scroller_custom_widget_base_theme_set(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, const char *klass, const char *group)
|
2010-03-22 21:46:53 -07:00
|
|
|
{
|
2013-10-05 01:29:13 -07:00
|
|
|
ELM_LAYOUT_DATA_GET(obj, ld);
|
2012-07-04 14:42:35 -07:00
|
|
|
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN(klass);
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN(group);
|
|
|
|
|
2012-11-25 22:32:53 -08:00
|
|
|
if (eina_stringshare_replace(&(ld->klass), klass) ||
|
|
|
|
eina_stringshare_replace(&(ld->group), group))
|
2014-04-03 08:50:15 -07:00
|
|
|
eo_do(obj, elm_obj_widget_theme_apply());
|
2010-03-22 21:46:53 -07:00
|
|
|
}
|
|
|
|
|
2008-10-22 01:58:56 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_content_min_limit(Evas_Object *obj,
|
|
|
|
Eina_Bool w,
|
|
|
|
Eina_Bool h)
|
2008-10-22 01:58:56 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_content_min_limit(w, h));
|
2008-10-22 01:58:56 -07:00
|
|
|
}
|
2009-01-08 23:35:52 -08:00
|
|
|
|
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_region_show(Evas_Object *obj,
|
|
|
|
Evas_Coord x,
|
|
|
|
Evas_Coord y,
|
|
|
|
Evas_Coord w,
|
|
|
|
Evas_Coord h)
|
2009-01-08 23:35:52 -08:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_content_region_show(x, y, w, h));
|
2009-01-08 23:35:52 -08:00
|
|
|
}
|
2009-04-23 05:58:34 -07:00
|
|
|
|
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_policy_set(Evas_Object *obj,
|
|
|
|
Elm_Scroller_Policy policy_h,
|
|
|
|
Elm_Scroller_Policy policy_v)
|
2009-04-23 05:58:34 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_policy_set(policy_h, policy_v));
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_elm_scroller_elm_interface_scrollable_policy_set(Eo *obj, Elm_Scroller_Data *sd EINA_UNUSED, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v)
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2011-08-29 09:30:14 -07:00
|
|
|
if ((policy_h >= ELM_SCROLLER_POLICY_LAST) ||
|
|
|
|
(policy_v >= ELM_SCROLLER_POLICY_LAST))
|
|
|
|
return;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do_super(obj, MY_CLASS, elm_interface_scrollable_policy_set(policy_h, policy_v));
|
2009-04-23 05:58:34 -07:00
|
|
|
}
|
|
|
|
|
2010-04-06 07:01:04 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_policy_get(const Evas_Object *obj,
|
|
|
|
Elm_Scroller_Policy *policy_h,
|
|
|
|
Elm_Scroller_Policy *policy_v)
|
2010-04-06 07:01:04 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_policy_get(policy_h, policy_v));
|
2010-04-06 07:01:04 -07:00
|
|
|
}
|
|
|
|
|
2013-04-10 04:06:41 -07:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_single_direction_set(Evas_Object *obj,
|
|
|
|
Elm_Scroller_Single_Direction single_dir)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_single_direction_set(single_dir));
|
2013-04-10 04:06:41 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_elm_scroller_elm_interface_scrollable_single_direction_set(Eo *obj, Elm_Scroller_Data *sd EINA_UNUSED, Elm_Scroller_Single_Direction single_dir)
|
2013-04-10 04:06:41 -07:00
|
|
|
{
|
|
|
|
if (single_dir >= ELM_SCROLLER_SINGLE_DIRECTION_LAST)
|
|
|
|
return;
|
|
|
|
|
|
|
|
eo_do_super(obj, MY_CLASS,
|
2014-03-17 04:44:40 -07:00
|
|
|
elm_interface_scrollable_single_direction_set(single_dir));
|
2013-04-10 04:06:41 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI Elm_Scroller_Single_Direction
|
|
|
|
elm_scroller_single_direction_get(const Evas_Object *obj)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj, ELM_SCROLLER_SINGLE_DIRECTION_NONE);
|
2014-04-03 08:50:15 -07:00
|
|
|
Elm_Scroller_Single_Direction single_dir = ELM_SCROLLER_SINGLE_DIRECTION_NONE;
|
2013-04-10 04:06:41 -07:00
|
|
|
|
2014-04-03 08:50:15 -07:00
|
|
|
eo_do((Eo *) obj, single_dir = elm_interface_scrollable_single_direction_get());
|
2013-04-10 04:06:41 -07:00
|
|
|
return single_dir;
|
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Elm_Scroller_Single_Direction
|
|
|
|
_elm_scroller_elm_interface_scrollable_single_direction_get(Eo *obj, Elm_Scroller_Data *sd EINA_UNUSED)
|
2013-04-10 04:06:41 -07:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
Elm_Scroller_Single_Direction ret = ELM_SCROLLER_SINGLE_DIRECTION_NONE;
|
2013-04-10 04:06:41 -07:00
|
|
|
eo_do_super(obj, MY_CLASS,
|
2014-04-03 08:50:15 -07:00
|
|
|
ret = elm_interface_scrollable_single_direction_get());
|
2014-03-26 01:54:49 -07:00
|
|
|
return ret;
|
2013-04-10 04:06:41 -07:00
|
|
|
}
|
|
|
|
|
2009-04-23 05:58:34 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_region_get(const Evas_Object *obj,
|
|
|
|
Evas_Coord *x,
|
|
|
|
Evas_Coord *y,
|
|
|
|
Evas_Coord *w,
|
|
|
|
Evas_Coord *h)
|
2009-04-23 05:58:34 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_content_region_get(x, y, w, h));
|
2009-04-23 05:58:34 -07:00
|
|
|
}
|
2009-05-08 04:27:32 -07:00
|
|
|
|
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_child_size_get(const Evas_Object *obj,
|
|
|
|
Evas_Coord *w,
|
|
|
|
Evas_Coord *h)
|
2009-05-08 04:27:32 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_content_size_get(w, h));
|
2009-05-08 04:27:32 -07:00
|
|
|
}
|
|
|
|
|
2013-05-17 07:30:42 -07:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_page_snap_set(Evas_Object *obj,
|
|
|
|
Eina_Bool page_snap_h,
|
|
|
|
Eina_Bool page_snap_v)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_page_snap_allow_set
|
2013-05-17 07:30:42 -07:00
|
|
|
(page_snap_h, page_snap_v));
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
elm_scroller_page_snap_get(const Evas_Object *obj,
|
|
|
|
Eina_Bool *page_snap_h,
|
|
|
|
Eina_Bool *page_snap_v)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_page_snap_allow_get
|
2013-05-17 07:30:42 -07:00
|
|
|
(page_snap_h, page_snap_v));
|
|
|
|
}
|
|
|
|
|
2009-05-08 04:27:32 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_bounce_set(Evas_Object *obj,
|
|
|
|
Eina_Bool h_bounce,
|
|
|
|
Eina_Bool v_bounce)
|
2009-05-08 04:27:32 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_bounce_allow_set(h_bounce, v_bounce));
|
2009-05-08 04:27:32 -07:00
|
|
|
}
|
2009-09-01 03:42:52 -07:00
|
|
|
|
2010-11-04 17:45:59 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_bounce_get(const Evas_Object *obj,
|
|
|
|
Eina_Bool *h_bounce,
|
|
|
|
Eina_Bool *v_bounce)
|
2010-11-04 17:45:59 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_bounce_allow_get(h_bounce, v_bounce));
|
2010-11-04 17:45:59 -07:00
|
|
|
}
|
|
|
|
|
2009-09-01 03:42:52 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_page_relative_set(Evas_Object *obj,
|
|
|
|
double h_pagerel,
|
|
|
|
double v_pagerel)
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2013-04-17 06:50:41 -07:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *)obj, elm_interface_scrollable_page_relative_set(h_pagerel, v_pagerel));
|
2009-09-01 03:42:52 -07:00
|
|
|
}
|
|
|
|
|
2012-07-10 14:40:30 -07:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_page_relative_get(const Evas_Object *obj,
|
|
|
|
double *h_pagerel,
|
|
|
|
double *v_pagerel)
|
|
|
|
{
|
2012-09-10 07:06:53 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2012-07-10 14:40:30 -07:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *)obj, elm_interface_scrollable_paging_get(h_pagerel, v_pagerel, NULL, NULL));
|
2012-07-10 14:40:30 -07:00
|
|
|
}
|
|
|
|
|
2009-09-01 03:42:52 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_page_size_set(Evas_Object *obj,
|
|
|
|
Evas_Coord h_pagesize,
|
|
|
|
Evas_Coord v_pagesize)
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_page_size_set(h_pagesize, v_pagesize));
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_elm_scroller_elm_interface_scrollable_page_size_set(Eo *obj, Elm_Scroller_Data *sd EINA_UNUSED, Evas_Coord h_pagesize, Evas_Coord v_pagesize)
|
2009-09-01 03:42:52 -07:00
|
|
|
{
|
2014-04-12 09:58:43 -07:00
|
|
|
double pagerel_h = 0.0, pagerel_v = 0.0;
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_paging_get(&pagerel_h, &pagerel_v, NULL, NULL));
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_paging_set(pagerel_h, pagerel_v, h_pagesize, v_pagesize));
|
2009-09-01 03:42:52 -07:00
|
|
|
}
|
2009-09-03 05:36:39 -07:00
|
|
|
|
2012-07-10 14:40:30 -07:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_page_size_get(const Evas_Object *obj,
|
|
|
|
Evas_Coord *h_pagesize,
|
|
|
|
Evas_Coord *v_pagesize)
|
|
|
|
{
|
2012-09-10 07:06:53 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2012-07-10 14:40:30 -07:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *)obj, elm_interface_scrollable_paging_get(NULL, NULL, h_pagesize, v_pagesize));
|
2012-07-10 14:40:30 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_elm_scroller_page_scroll_limit_set(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, int page_limit_h, int page_limit_v)
|
2013-04-05 21:06:43 -07:00
|
|
|
{
|
|
|
|
if (page_limit_h < 1)
|
|
|
|
page_limit_h = 9999;
|
|
|
|
if (page_limit_v < 1)
|
|
|
|
page_limit_v = 9999;
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_page_scroll_limit_set
|
2013-04-05 21:06:43 -07:00
|
|
|
(page_limit_h, page_limit_v));
|
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_elm_scroller_page_scroll_limit_get(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, int *page_limit_h, int *page_limit_v)
|
2013-04-05 21:06:43 -07:00
|
|
|
{
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_page_scroll_limit_get
|
2013-04-05 21:06:43 -07:00
|
|
|
(page_limit_h, page_limit_v));
|
|
|
|
}
|
|
|
|
|
2011-08-16 03:52:01 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_current_page_get(const Evas_Object *obj,
|
|
|
|
int *h_pagenumber,
|
|
|
|
int *v_pagenumber)
|
2011-08-16 03:52:01 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_current_page_get(h_pagenumber, v_pagenumber));
|
2011-08-16 03:52:01 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_last_page_get(const Evas_Object *obj,
|
|
|
|
int *h_pagenumber,
|
|
|
|
int *v_pagenumber)
|
2011-08-16 03:52:01 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_last_page_get(h_pagenumber, v_pagenumber));
|
2011-08-16 03:52:01 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_page_show(Evas_Object *obj,
|
|
|
|
int h_pagenumber,
|
|
|
|
int v_pagenumber)
|
2011-08-16 03:52:01 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_page_show(h_pagenumber, v_pagenumber));
|
2011-08-16 03:52:01 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_page_bring_in(Evas_Object *obj,
|
|
|
|
int h_pagenumber,
|
|
|
|
int v_pagenumber)
|
2011-08-16 03:52:01 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_page_bring_in(h_pagenumber, v_pagenumber));
|
2011-08-16 03:52:01 -07:00
|
|
|
}
|
|
|
|
|
2009-09-03 05:36:39 -07:00
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_region_bring_in(Evas_Object *obj,
|
|
|
|
Evas_Coord x,
|
|
|
|
Evas_Coord y,
|
|
|
|
Evas_Coord w,
|
|
|
|
Evas_Coord h)
|
2009-09-03 05:36:39 -07:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_region_bring_in(x, y, w, h));
|
2009-09-03 05:36:39 -07:00
|
|
|
}
|
2010-12-17 02:47:55 -08:00
|
|
|
|
|
|
|
EAPI void
|
2012-07-04 14:42:35 -07:00
|
|
|
elm_scroller_gravity_set(Evas_Object *obj,
|
|
|
|
double x,
|
|
|
|
double y)
|
2010-12-17 02:47:55 -08:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2010-12-17 02:47:55 -08:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_gravity_set(x, y));
|
2010-12-17 02:47:55 -08:00
|
|
|
}
|
|
|
|
|
2012-07-04 14:42:35 -07:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_gravity_get(const Evas_Object *obj,
|
|
|
|
double *x,
|
|
|
|
double *y)
|
2010-12-17 02:47:55 -08:00
|
|
|
{
|
2012-07-04 14:42:35 -07:00
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
2010-12-17 02:47:55 -08:00
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_gravity_get(x, y));
|
2010-12-17 02:47:55 -08:00
|
|
|
}
|
2011-10-14 03:57:31 -07:00
|
|
|
|
2013-05-09 12:26:29 -07:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_movement_block_set(Evas_Object *obj,
|
|
|
|
Elm_Scroller_Movement_Block block)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
2014-03-17 04:44:40 -07:00
|
|
|
eo_do(obj, elm_interface_scrollable_movement_block_set(block));
|
2013-05-09 12:26:29 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI Elm_Scroller_Movement_Block
|
|
|
|
elm_scroller_movement_block_get(const Evas_Object *obj)
|
|
|
|
{
|
2014-04-03 08:50:15 -07:00
|
|
|
Elm_Scroller_Movement_Block block = ELM_SCROLLER_MOVEMENT_NO_BLOCK;
|
2013-05-09 12:26:29 -07:00
|
|
|
|
2013-11-28 08:17:15 -08:00
|
|
|
ELM_SCROLLABLE_CHECK(obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
|
2013-05-09 12:26:29 -07:00
|
|
|
|
2014-04-03 08:50:15 -07:00
|
|
|
eo_do((Eo *) obj, block = elm_interface_scrollable_movement_block_get());
|
2013-05-09 12:26:29 -07:00
|
|
|
|
|
|
|
return block;
|
|
|
|
}
|
|
|
|
|
2014-11-20 00:48:36 -08:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_step_size_set(Evas_Object *obj,
|
|
|
|
Evas_Coord x,
|
|
|
|
Evas_Coord y)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
|
|
|
eo_do(obj, elm_interface_scrollable_step_size_set(x, y));
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
elm_scroller_step_size_get(const Evas_Object *obj,
|
|
|
|
Evas_Coord *x,
|
|
|
|
Evas_Coord *y)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
|
|
|
eo_do((Eo *) obj, elm_interface_scrollable_step_size_get(x, y));
|
|
|
|
}
|
|
|
|
|
2015-01-23 19:01:03 -08:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_loop_set(Evas_Object *obj,
|
|
|
|
Eina_Bool loop_h,
|
|
|
|
Eina_Bool loop_v)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
ELM_SCROLLER_DATA_GET(obj, sd);
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
if (sd->loop_h == loop_h && sd->loop_v == loop_v) return;
|
|
|
|
|
|
|
|
sd->loop_h = loop_h;
|
|
|
|
sd->loop_v = loop_v;
|
|
|
|
|
|
|
|
eo_do(obj, elm_interface_scrollable_loop_set(loop_h, loop_v));
|
|
|
|
|
|
|
|
if (sd->content)
|
|
|
|
{
|
|
|
|
if (sd->loop_h || sd->loop_v)
|
|
|
|
{
|
|
|
|
eo_do(obj, elm_interface_scrollable_content_set(NULL));
|
|
|
|
_loop_content_set(obj, sd, sd->content);
|
|
|
|
|
|
|
|
if (sd->contents)
|
|
|
|
{
|
|
|
|
eo_do(obj, elm_interface_scrollable_content_set(sd->contents));
|
|
|
|
elm_widget_sub_object_add(obj, sd->contents);
|
|
|
|
elm_widget_on_show_region_hook_set(sd->contents, _show_region_hook, obj);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
for (i = 0 ; i < 3 ; i++)
|
|
|
|
{
|
|
|
|
if (sd->proxy_content[i])
|
|
|
|
{
|
|
|
|
evas_object_del(sd->proxy_content[i]);
|
|
|
|
sd->proxy_content[i]= NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
elm_layout_sizing_eval(obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
elm_scroller_loop_get(const Evas_Object *obj,
|
|
|
|
Eina_Bool *loop_h,
|
|
|
|
Eina_Bool *loop_v)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
|
|
|
eo_do(obj, elm_interface_scrollable_loop_get(loop_h, loop_v));
|
|
|
|
}
|
|
|
|
|
2015-06-22 02:57:51 -07:00
|
|
|
EAPI void
|
|
|
|
elm_scroller_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj);
|
|
|
|
|
|
|
|
eo_do((Eo *)obj, elm_interface_scrollable_wheel_disabled_set(disabled));
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI Eina_Bool
|
|
|
|
elm_scroller_wheel_disabled_get(const Evas_Object *obj)
|
|
|
|
{
|
|
|
|
ELM_SCROLLABLE_CHECK(obj, EINA_FALSE);
|
|
|
|
|
|
|
|
Eina_Bool ret;
|
|
|
|
|
|
|
|
return eo_do_ret((Eo *) obj, ret, elm_interface_scrollable_wheel_disabled_get());
|
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_elm_scroller_propagate_events_set(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, Eina_Bool propagation)
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2013-10-05 01:15:27 -07:00
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
2012-07-04 14:42:35 -07:00
|
|
|
|
2012-11-25 22:32:53 -08:00
|
|
|
evas_object_propagate_events_set(wd->resize_obj, propagation);
|
2011-10-14 03:57:31 -07:00
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_elm_scroller_propagate_events_get(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED)
|
2011-10-14 03:57:31 -07:00
|
|
|
{
|
2014-03-26 01:54:49 -07:00
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
|
|
|
|
return evas_object_propagate_events_get(wd->resize_obj);
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
2011-10-14 03:57:31 -07:00
|
|
|
|
2012-11-25 22:32:53 -08:00
|
|
|
static void
|
2014-03-26 01:54:49 -07:00
|
|
|
_elm_scroller_class_constructor(Eo_Class *klass)
|
2012-11-25 22:32:53 -08:00
|
|
|
{
|
2013-11-07 03:44:22 -08:00
|
|
|
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
|
2012-11-25 22:32:53 -08:00
|
|
|
}
|
|
|
|
|
2014-07-25 01:33:19 -07:00
|
|
|
EOLIAN const Elm_Atspi_Action *
|
|
|
|
_elm_scroller_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Scroller_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
static Elm_Atspi_Action atspi_actions[] = {
|
|
|
|
{ "move,prior", "move", "prior", _key_action_move},
|
|
|
|
{ "move,next", "move", "next", _key_action_move},
|
|
|
|
{ "move,left", "move", "left", _key_action_move},
|
|
|
|
{ "move,right", "move", "right", _key_action_move},
|
|
|
|
{ "move,up", "move", "up", _key_action_move},
|
|
|
|
{ "move,down", "move", "down", _key_action_move},
|
|
|
|
{ "move,first", "move", "first", _key_action_move},
|
|
|
|
{ "move,last", "move", "last", _key_action_move},
|
|
|
|
{ NULL, NULL, NULL, NULL }
|
|
|
|
};
|
|
|
|
return &atspi_actions[0];
|
|
|
|
}
|
|
|
|
|
2014-03-26 01:54:49 -07:00
|
|
|
#include "elm_scroller.eo.c"
|