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)
{
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
_item_update_animation_run(rsd);
//delete tmp_item
evas_object_del(tmp_item->base.obj);
+ rsd->drag_item = NULL;
}
else
{
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!!");
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
{