summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2022-12-31 03:47:27 +0100
committerChristian Soffke <christian.soffke@gmail.com>2022-12-30 21:57:55 -0500
commit1773e56447785931968d46002b73307c1fb3a35a (patch)
treef52231390381bb9c56c08bb0de43bc53ca839180
parent178560f495b0b4c0cf3249c07ee81e94c001c312 (diff)
downloadrockbox-1773e56447.tar.gz
rockbox-1773e56447.zip
tagtree: Discard item history when selection changes in both directions
A changed selection only caused the item history for deeper levels to be discarded in tagtree_enter, when you were descending, but not in tagtree_exit when you were ascending the menu hierarchy again. Change-Id: Ia40fa47980a05c2569e8af04e928b06130aa1f33
-rw-r--r--apps/tagtree.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/apps/tagtree.c b/apps/tagtree.c
index 7887ee1c36..03af5fc83a 100644
--- a/apps/tagtree.c
+++ b/apps/tagtree.c
@@ -2035,12 +2035,16 @@ int tagtree_enter(struct tree_context* c, bool is_visible)
void tagtree_exit(struct tree_context* c, bool is_visible)
{
if (is_visible) /* update selection history only for user-selected items */
+ {
+ if (c->selected_item != selected_item_history[c->dirlevel])
+ max_history_level = c->dirlevel; /* discard descending item history */
selected_item_history[c->dirlevel] = c->selected_item;
+ }
c->dirfull = false;
if (c->dirlevel > 0)
c->dirlevel--;
if (is_visible)
- c->selected_item=selected_item_history[c->dirlevel];
+ c->selected_item = selected_item_history[c->dirlevel];
c->currtable = table_history[c->dirlevel];
c->currextra = extra_history[c->dirlevel];
}