From be0af0ed00148c55e1eb519444ea48201677badb Mon Sep 17 00:00:00 2001 From: Jaehyun Cho Date: Wed, 9 Aug 2017 23:32:35 +0900 Subject: [PATCH] elc_naviframe: Fix to handle item deletion right after item push If an item is deleted right after the item is newly pushed, the push transition should not happen for both the new item and the current item. --- src/lib/elementary/elc_naviframe.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/elc_naviframe.c b/src/lib/elementary/elc_naviframe.c index 42f5a40c98..f057bb57d9 100644 --- a/src/lib/elementary/elc_naviframe.c +++ b/src/lib/elementary/elc_naviframe.c @@ -616,8 +616,16 @@ end: // make sure there is no more reference to this item. EINA_LIST_FOREACH(sd->ops, l, nfo) { - if (nfo->related == nit) nfo->related = NULL; - if (nfo->self == nit) nfo->self = NULL; + /* If an transition is cancelled by deleting an item, then the pair + * transition also should be cancelled. + * This case can happen when an item is deleted by elm_object_item_del() + * right after the item is newly pushed. + */ + if ((nfo->self == nit) || (nfo->related == nit)) + { + nfo->self = NULL; + nfo->related = NULL; + } } _item_free(nit);