#define _ROTARY_SELECTOR_ROTARY_EVENT_RESET_TIME 500
#define _ROTARY_SELECTOR_ROTARY_EVENT_TIME_ACCELERATION_THRESHOLD 60
-
+#define _ROTARY_SELECTOR_DRAG_ITEM_WIDTH 80
+#define _ROTARY_SELECTOR_DRAG_ITEM_HEIGHT 80
#define _ROTARY_SELECTOR_DEBUG_ENABLED 0
// ====================================== util ==================================== //
icon = elm_button_add(rsd->rotary_selector);
elm_object_style_set(icon, "rotary_selector_item");
- evas_object_resize(icon, rsd->item_width, rsd->item_height);
- int xoff = rsd->item_width / 2;
- int yoff = rsd->item_height / 2;
+ evas_object_resize(icon, _ROTARY_SELECTOR_DRAG_ITEM_WIDTH, _ROTARY_SELECTOR_DRAG_ITEM_HEIGHT);
+ int xoff = _ROTARY_SELECTOR_DRAG_ITEM_WIDTH / 2;
+ int yoff = _ROTARY_SELECTOR_DRAG_ITEM_HEIGHT / 2;
evas_object_move(icon, rsd->drag_pos_x - xoff, rsd->drag_pos_y - yoff);
evas_object_show(icon);
_eext_rotary_selector_color_class_parent_set(icon, rsd->rotary_selector);
Evas_Event_Mouse_Down *ev = event_info;
Eext_Rotary_Selector_Data *rsd = (Eext_Rotary_Selector_Data *)data;
+ rsd->drag_pos_x = -1;
+ rsd->drag_pos_y = -1;
if (rsd->previous_page_animator || rsd->next_page_animator || rsd->end_effect_animator)
{
INF("animator is running!!");
else
{
rsd->pressed_item_index = new_index;
+ rsd->drag_pos_x = ev->canvas.x;
+ rsd->drag_pos_y = ev->canvas.y;
if (rsd->editing)
{
int add_idx;
add_idx = eina_list_count(rsd->item_list) - 1;
if (!rsd->add_enabled || (new_index != add_idx))
{
- rsd->drag_pos_x = ev->canvas.x;
- rsd->drag_pos_y = ev->canvas.y;
rsd->drag_item_index = new_index;
rsd->drop_item_index = new_index;
rsd->longpress_timer = ecore_timer_add(rsd->longpress_timeout,
{
return;
}
+ if (rsd->longpress_timer)
+ {
+ //check move distance to cancel timer
+ Evas_Coord x, y;
+ double dist;
+
+ x = ev->cur.canvas.x;
+ y = ev->cur.canvas.y;
+ dist = sqrt(pow(x - rsd->drag_pos_x, 2) + pow(y - rsd->drag_pos_y, 2));
+ if (dist > elm_config_finger_size_get())
+ {
+ ecore_timer_del(rsd->longpress_timer);
+ rsd->longpress_timer = NULL;
+ }
+ }
if (rsd->drag_item)
{
- int xoff = rsd->item_width / 2;
- int yoff = rsd->item_height / 2;
+ int xoff = _ROTARY_SELECTOR_DRAG_ITEM_WIDTH / 2;
+ int yoff = _ROTARY_SELECTOR_DRAG_ITEM_HEIGHT / 2;
rsd->drag_pos_x = ev->cur.canvas.x;
rsd->drag_pos_y = ev->cur.canvas.y;
evas_object_move(rsd->drag_obj, ev->cur.canvas.x - xoff, ev->cur.canvas.y - yoff);
rsd->editing = EINA_TRUE;
rsd->entering_edit_mode = EINA_TRUE;
- _items_invalidate(rsd);
- _rotary_selector_item_delete_icon_show(rsd);
EINA_LIST_FOREACH(rsd->item_list, l, item)
{
elm_object_signal_emit(item->base.obj, "elm,action,button,unselected", "");
}
+ if (rsd->drag_pos_x == -1 && rsd->drag_pos_y == -1)
+ _rotary_selector_item_delete_icon_show(rsd);
+ else
+ {
+ int add_idx;
+
+ add_idx = eina_list_count(rsd->item_list) - 1;
+ if (!rsd->add_enabled || (rsd->pressed_item_index != add_idx))
+ {
+ rsd->drag_item_index = rsd->pressed_item_index;
+ _item_longpress_cb(rsd);
+ }
+ }
+ _items_invalidate(rsd);
bg = elm_object_part_content_get(rsd->rotary_selector, "selector,bg_image");
elm_object_signal_emit(bg, "elm,selector,bg,hide", "elm");
rsd->selector_bg_hidden = EINA_TRUE;