diff --git a/apps/root_menu.c b/apps/root_menu.c index 95524e1ba3..227ed75ee3 100644 --- a/apps/root_menu.c +++ b/apps/root_menu.c @@ -122,7 +122,7 @@ static int browser(void* param) static char last_folder[MAX_PATH] = "/"; /* and stuff for the database browser */ #ifdef HAVE_TAGCACHE - static int last_db_dirlevel = 0, last_db_selection = 0; + static int last_db_dirlevel = 0, last_db_selection = 0, last_ft_dirlevel = 0; #endif switch ((intptr_t)param) @@ -266,6 +266,7 @@ static int browser(void* param) if (!tagcache_is_usable()) return GO_TO_PREVIOUS; filter = SHOW_ID3DB; + last_ft_dirlevel = tc->dirlevel; tc->dirlevel = last_db_dirlevel; tc->selected_item = last_db_selection; push_current_activity(ACTIVITY_DATABASEBROWSER); @@ -291,6 +292,7 @@ static int browser(void* param) case GO_TO_DBBROWSER: last_db_dirlevel = tc->dirlevel; last_db_selection = tc->selected_item; + tc->dirlevel = last_ft_dirlevel; break; #endif } diff --git a/apps/tagtree.c b/apps/tagtree.c index b6d0c8ac06..19353cabbd 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c @@ -191,6 +191,10 @@ static int current_entry_count; static struct tree_context *tc; +static int selected_item_history[MAX_DIR_LEVELS]; +static int table_history[MAX_DIR_LEVELS]; +static int extra_history[MAX_DIR_LEVELS]; + /* a few memory alloc helper */ static int tagtree_handle; static size_t tagtree_bufsize, tagtree_buf_used; @@ -1840,9 +1844,9 @@ int tagtree_enter(struct tree_context* c) if (c->dirlevel >= MAX_DIR_LEVELS) return 0; - c->selected_item_history[c->dirlevel]=c->selected_item; - c->table_history[c->dirlevel] = c->currtable; - c->extra_history[c->dirlevel] = c->currextra; + selected_item_history[c->dirlevel]=c->selected_item; + table_history[c->dirlevel] = c->currtable; + extra_history[c->dirlevel] = c->currextra; c->pos_history[c->dirlevel] = c->firstpos; c->dirlevel++; @@ -1987,10 +1991,10 @@ void tagtree_exit(struct tree_context* c) c->dirfull = false; if (c->dirlevel > 0) c->dirlevel--; - c->selected_item=c->selected_item_history[c->dirlevel]; + c->selected_item=selected_item_history[c->dirlevel]; gui_synclist_select_item(&tree_lists, c->selected_item); - c->currtable = c->table_history[c->dirlevel]; - c->currextra = c->extra_history[c->dirlevel]; + c->currtable = table_history[c->dirlevel]; + c->currextra = extra_history[c->dirlevel]; c->firstpos = c->pos_history[c->dirlevel]; } diff --git a/apps/tree.h b/apps/tree.h index a75e8d2260..e132fcc191 100644 --- a/apps/tree.h +++ b/apps/tree.h @@ -90,8 +90,6 @@ struct tree_context { int dirsindir; /* file use */ int dirlength; /* total number of entries in dir, incl. those not loaded */ #ifdef HAVE_TAGCACHE - int table_history[MAX_DIR_LEVELS]; /* db use */ - int extra_history[MAX_DIR_LEVELS]; /* db use */ int currtable; /* db use */ int currextra; /* db use */ #endif