forked from enlightenment/efl
slight change in drag events vs scrolling on_hold to fix small "distance
race" issue. SVN revision: 46505
This commit is contained in:
parent
de624fa62f
commit
6a7271084d
|
@ -872,6 +872,12 @@ item_drag_stop(void *data, Evas_Object *obj, void *event_info)
|
||||||
printf("drag stop\n");
|
printf("drag stop\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
item_longpress(void *data, Evas_Object *obj, void *event_info)
|
||||||
|
{
|
||||||
|
printf("longpress\n");
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
test_genlist5(void *data, Evas_Object *obj, void *event_info)
|
test_genlist5(void *data, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
|
@ -926,6 +932,7 @@ test_genlist5(void *data, Evas_Object *obj, void *event_info)
|
||||||
evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
|
evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
|
||||||
evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
|
evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
|
||||||
evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
|
evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
|
||||||
|
evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
|
||||||
|
|
||||||
bx2 = elm_box_add(win);
|
bx2 = elm_box_add(win);
|
||||||
elm_box_horizontal_set(bx2, 1);
|
elm_box_horizontal_set(bx2, 1);
|
||||||
|
|
|
@ -477,16 +477,7 @@ _mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
||||||
_item_unselect(it);
|
_item_unselect(it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((!it->down) || (it->wd->on_hold) || (it->wd->longpressed))
|
if ((it->dragging) && (it->down))
|
||||||
{
|
|
||||||
if (it->long_timer)
|
|
||||||
{
|
|
||||||
ecore_timer_del(it->long_timer);
|
|
||||||
it->long_timer = NULL;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (it->dragging)
|
|
||||||
{
|
{
|
||||||
if (it->long_timer)
|
if (it->long_timer)
|
||||||
{
|
{
|
||||||
|
@ -496,6 +487,15 @@ _mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
||||||
evas_object_smart_callback_call(it->wd->obj, "drag", it);
|
evas_object_smart_callback_call(it->wd->obj, "drag", it);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ((!it->down)/* || (it->wd->on_hold)*/ || (it->wd->longpressed))
|
||||||
|
{
|
||||||
|
if (it->long_timer)
|
||||||
|
{
|
||||||
|
ecore_timer_del(it->long_timer);
|
||||||
|
it->long_timer = NULL;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!it->display_only)
|
if (!it->display_only)
|
||||||
elm_coords_finger_size_adjust(1, &minw, 1, &minh);
|
elm_coords_finger_size_adjust(1, &minw, 1, &minh);
|
||||||
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
|
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
|
||||||
|
@ -577,6 +577,7 @@ _mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
||||||
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
|
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
|
||||||
it->dx = ev->canvas.x - x;
|
it->dx = ev->canvas.x - x;
|
||||||
it->dy = ev->canvas.y - y;
|
it->dy = ev->canvas.y - y;
|
||||||
|
it->wd->longpressed = EINA_FALSE;
|
||||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) it->wd->on_hold = EINA_TRUE;
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) it->wd->on_hold = EINA_TRUE;
|
||||||
else it->wd->on_hold = EINA_FALSE;
|
else it->wd->on_hold = EINA_FALSE;
|
||||||
it->wd->wasselected = it->selected;
|
it->wd->wasselected = it->selected;
|
||||||
|
@ -599,6 +600,7 @@ _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
||||||
it->down = 0;
|
it->down = 0;
|
||||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) it->wd->on_hold = EINA_TRUE;
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) it->wd->on_hold = EINA_TRUE;
|
||||||
else it->wd->on_hold = EINA_FALSE;
|
else it->wd->on_hold = EINA_FALSE;
|
||||||
|
it->wd->longpressed = EINA_FALSE;
|
||||||
if (it->long_timer)
|
if (it->long_timer)
|
||||||
{
|
{
|
||||||
ecore_timer_del(it->long_timer);
|
ecore_timer_del(it->long_timer);
|
||||||
|
@ -612,7 +614,6 @@ _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
||||||
}
|
}
|
||||||
if (it->wd->on_hold)
|
if (it->wd->on_hold)
|
||||||
{
|
{
|
||||||
it->wd->longpressed = EINA_FALSE;
|
|
||||||
it->wd->on_hold = EINA_FALSE;
|
it->wd->on_hold = EINA_FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -398,6 +398,7 @@ _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
||||||
if (ev->button != 1) return;
|
if (ev->button != 1) return;
|
||||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) wd->on_hold = EINA_TRUE;
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) wd->on_hold = EINA_TRUE;
|
||||||
else wd->on_hold = EINA_FALSE;
|
else wd->on_hold = EINA_FALSE;
|
||||||
|
wd->longpressed = EINA_FALSE;
|
||||||
if (it->long_timer)
|
if (it->long_timer)
|
||||||
{
|
{
|
||||||
ecore_timer_del(it->long_timer);
|
ecore_timer_del(it->long_timer);
|
||||||
|
@ -410,7 +411,6 @@ _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
||||||
}
|
}
|
||||||
if (wd->longpressed)
|
if (wd->longpressed)
|
||||||
{
|
{
|
||||||
wd->longpressed = EINA_FALSE;
|
|
||||||
if (!wd->wasselected) _item_unselect(it);
|
if (!wd->wasselected) _item_unselect(it);
|
||||||
wd->wasselected = 0;
|
wd->wasselected = 0;
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue