From: Taehyub Kim Date: Thu, 10 May 2018 09:23:22 +0000 (+0900) Subject: wearable/rotary_selector: expand touch area of deleted item X-Git-Tag: submit/tizen/20190424.060632~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0b08995553b9dce7fea53eaa2a1e536d08fb4cbc;p=platform%2Fcore%2Fuifw%2Fefl-ext.git wearable/rotary_selector: expand touch area of deleted item Change-Id: I14c8a1ce2a8f8a992f1f37ed920604a47add30fb --- diff --git a/src/wearable/efl_extension_rotary_selector.c b/src/wearable/efl_extension_rotary_selector.c index c522a48..d1c25b7 100644 --- a/src/wearable/efl_extension_rotary_selector.c +++ b/src/wearable/efl_extension_rotary_selector.c @@ -385,6 +385,19 @@ _del_item_timer_cb(void *data) return ECORE_CALLBACK_CANCEL; } +static void +_delete_item(Eext_Rotary_Selector_Data *rsd, Eext_Rotary_Selector_Item *it) +{ + rsd->del_item = it; + rsd->item_list = eina_list_remove(rsd->item_list, it); + elm_object_signal_emit(it->base.obj, "elm,selector,item,hide", "elm"); + rsd->del_item_index = rsd->pressed_item_index; + rsd->item_move_started = EINA_TRUE; + if (rsd->item_del_timer) + ecore_timer_del(rsd->item_del_timer); + rsd->item_del_timer = ecore_timer_add(_ROTARY_SELECTOR_DEL_ANIMATION_DURATION, _del_item_timer_cb, rsd); +} + static void _dnd_enter_cb(void *data, Evas_Object *obj) { @@ -805,6 +818,7 @@ _drag_done_cb(void *data, Evas_Object *obj) if (rsd->drag_done) { evas_object_smart_callback_call(rsd->rotary_selector, "item,reordered", (void*)rsd->drag_item); + rsd->drag_item = NULL; return; } //there was no dnd pos, leave, done at drop side @@ -825,6 +839,7 @@ _drag_done_cb(void *data, Evas_Object *obj) _item_update_animation_run(rsd); //delete tmp_item evas_object_del(tmp_item->base.obj); + rsd->drag_item = NULL; } else { @@ -1064,6 +1079,15 @@ _event_area_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) ecore_timer_del(rsd->longpress_timer); rsd->longpress_timer = NULL; } + + if (rsd->drag_item) + { + rsd->pressed = EINA_FALSE; + rsd->touched_item_changed = EINA_FALSE; + rsd->pressed_item_index = _ROTARY_SELECTOR_PRESSED_ITEM_INDEX_INVALID; + return; + } + if (rsd->previous_page_animator || rsd->next_page_animator || rsd->end_effect_animator) { INF("animator is running!!"); @@ -1147,33 +1171,34 @@ _event_area_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) int add_idx = eina_list_count(rsd->item_list) - 1; if (rsd->editing) { - if (rsd->on_delete_icon) + if (!rsd->entering_edit_mode) { - Eina_Bool still_on = _delete_icon_mouse_on_check(rsd, new_index, ev->canvas.x, ev->canvas.y); - if (still_on) + if (rsd->on_delete_icon) { - Eext_Rotary_Selector_Item *it = NULL; - - it = eina_list_nth(rsd->item_list, new_index); - rsd->del_item = it; - rsd->item_list = eina_list_remove(rsd->item_list, it); - elm_object_signal_emit(it->base.obj, "elm,selector,item,hide", "elm"); - rsd->del_item_index = rsd->pressed_item_index; - rsd->item_move_started = EINA_TRUE; - if (rsd->item_del_timer) - ecore_timer_del(rsd->item_del_timer); - rsd->item_del_timer = ecore_timer_add(_ROTARY_SELECTOR_DEL_ANIMATION_DURATION, _del_item_timer_cb, rsd); + Eina_Bool still_on = _delete_icon_mouse_on_check(rsd, new_index, ev->canvas.x, ev->canvas.y); + if (still_on) + { + Eext_Rotary_Selector_Item *it = NULL; + it = eina_list_nth(rsd->item_list, new_index); + _delete_item(rsd, it); + } } - } - else if (rsd->add_enabled && (new_index == add_idx)) - { - if (!rsd->entering_edit_mode) + else if (!rsd->add_enabled || (new_index != add_idx)) { - _editing_mode_turnoff(rsd); - evas_object_smart_callback_call(rsd->rotary_selector, - "add_item,clicked", NULL); + Eext_Rotary_Selector_Item *it = NULL; + it = eina_list_nth(rsd->item_list, new_index); + if (it->delete_enabled) + { + _delete_item(rsd, it); + } } - } + else if (rsd->add_enabled && (new_index == add_idx)) + { + _editing_mode_turnoff(rsd); + evas_object_smart_callback_call(rsd->rotary_selector, + "add_item,clicked", NULL); + } + } } else {