Evas *e __UNUSED__)
{
Elm_Scrollable_Smart_Interface_Data *sid = data;
+ Eina_Bool horiz, vert;
if (sid->down.want_dragged)
{
int start = 0;
+ elm_widget_parents_bounce_get(sid->obj, &horiz, &vert);
if (sid->down.hold_parent)
{
- if ((sid->down.dir_x) &&
+ if ((sid->down.dir_x) && horiz &&
!_elm_scroll_can_scroll(sid, sid->down.hdir))
{
sid->down.dir_x = EINA_FALSE;
}
- if ((sid->down.dir_y) &&
+ if ((sid->down.dir_y) && vert &&
!_elm_scroll_can_scroll(sid, sid->down.vdir))
{
sid->down.dir_y = EINA_FALSE;
return EINA_TRUE;
}
+EAPI void
+elm_widget_parents_bounce_get(Evas_Object *obj,
+ Eina_Bool *horiz, Eina_Bool *vert)
+{
+ ELM_WIDGET_CHECK_OR_RETURN(obj);
+
+ Evas_Object *parent_obj = obj;
+ Eina_Bool h, v;
+
+ *horiz = EINA_FALSE;
+ *vert = EINA_FALSE;
+
+ do
+ {
+ parent_obj = elm_widget_parent_get(parent_obj);
+ if ((!parent_obj) || (!_elm_widget_is(parent_obj))) break;
+
+ if (_elm_scrollable_is(parent_obj))
+ {
+ ELM_SCROLLABLE_IFACE_GET(parent_obj, s_iface);
+ s_iface->bounce_allow_get(parent_obj, &h, &v);
+ if (h) *horiz = EINA_TRUE;
+ if (v) *vert = EINA_TRUE;
+ }
+ }
+ while (parent_obj);
+}
+
EAPI Eina_List *
elm_widget_scrollable_children_get(Evas_Object *obj)
{
EAPI void elm_widget_show_region_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool forceshow);
EAPI void elm_widget_show_region_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
EAPI Eina_Bool elm_widget_focus_region_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+EAPI void elm_widget_parents_bounce_get(Evas_Object *obj, Eina_Bool *horiz, Eina_Bool *vert);
EAPI void elm_widget_scroll_hold_push(Evas_Object *obj);
EAPI void elm_widget_scroll_hold_pop(Evas_Object *obj);
EAPI int elm_widget_scroll_hold_get(const Evas_Object *obj);