summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Cho <jae_hyun.cho@samsung.com>2017-08-09 23:32:35 +0900
committerJaehyun Cho <jae_hyun.cho@samsung.com>2017-08-09 23:39:32 +0900
commitbe0af0ed00148c55e1eb519444ea48201677badb (patch)
treec315eea8901a5a607d1b058bb7ab30497b8cdec2
parente2fca6c454c182d4666c2f081697ed6f917ff645 (diff)
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.
-rw-r--r--src/lib/elementary/elc_naviframe.c12
1 files 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:
616 // make sure there is no more reference to this item. 616 // make sure there is no more reference to this item.
617 EINA_LIST_FOREACH(sd->ops, l, nfo) 617 EINA_LIST_FOREACH(sd->ops, l, nfo)
618 { 618 {
619 if (nfo->related == nit) nfo->related = NULL; 619 /* If an transition is cancelled by deleting an item, then the pair
620 if (nfo->self == nit) nfo->self = NULL; 620 * transition also should be cancelled.
621 * This case can happen when an item is deleted by elm_object_item_del()
622 * right after the item is newly pushed.
623 */
624 if ((nfo->self == nit) || (nfo->related == nit))
625 {
626 nfo->self = NULL;
627 nfo->related = NULL;
628 }
621 } 629 }
622 630
623 _item_free(nit); 631 _item_free(nit);