From: SubodhKumar Date: Mon, 18 Jun 2018 08:34:59 +0000 (+0530) Subject: rotatory_selector: Start drag on first press X-Git-Tag: submit/tizen/20190424.060632~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e5d427c0b64ad67fd8b9186e2c67247a4e178256;p=platform%2Fcore%2Fuifw%2Fefl-ext.git rotatory_selector: Start drag on first press Change-Id: I206403bce3069145f89579fac13debb6e93ebf40 Signed-off-by: SubodhKumar --- diff --git a/src/wearable/efl_extension_rotary_selector.c b/src/wearable/efl_extension_rotary_selector.c index d18b60c..b99ed43 100644 --- a/src/wearable/efl_extension_rotary_selector.c +++ b/src/wearable/efl_extension_rotary_selector.c @@ -48,7 +48,8 @@ #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 ==================================== // @@ -765,9 +766,9 @@ _image_create_icon(Eext_Rotary_Selector_Data *data) 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); @@ -875,6 +876,8 @@ _event_area_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_inf 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!!"); @@ -933,6 +936,8 @@ _event_area_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_inf 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; @@ -955,8 +960,6 @@ _event_area_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_inf 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, @@ -987,10 +990,25 @@ _event_area_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_inf { 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); @@ -1810,14 +1828,26 @@ _editing_timer_cb(void *data) 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;