summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2005-01-18 22:59:29 +0000
committerBjörn Stenberg <bjorn@haxx.se>2005-01-18 22:59:29 +0000
commitea1188ce8c7053e191dd665c4036df849e19d2fe (patch)
tree2003c8f65f31478eebbdb0b15794c7c09d92644f
parentcdd79a35d40b314a723752cd40eb03ece79620b9 (diff)
downloadrockbox-ea1188ce8c7053e191dd665c4036df849e19d2fe.tar.gz
rockbox-ea1188ce8c7053e191dd665c4036df849e19d2fe.zip
Repaired broken exit from plugin/font/language browser
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5597 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/tree.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/apps/tree.c b/apps/tree.c
index e4c6110040..06aabb7d36 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -749,6 +749,11 @@ static bool dirbrowse(void)
749#ifdef TREE_RC_EXIT 749#ifdef TREE_RC_EXIT
750 case TREE_RC_EXIT: 750 case TREE_RC_EXIT:
751#endif 751#endif
752 if (*tc.dirfilter > NUM_FILTER_MODES && tc.dirlevel < 1) {
753 exit_func = true;
754 break;
755 }
756
752 if (!tc.dirlevel) 757 if (!tc.dirlevel)
753 break; 758 break;
754 759
@@ -1363,31 +1368,18 @@ bool create_playlist(void)
1363 1368
1364bool rockbox_browse(const char *root, int dirfilter) 1369bool rockbox_browse(const char *root, int dirfilter)
1365{ 1370{
1366 bool rc; 1371 static struct tree_context backup;
1367 int dircursor_save = tc.dircursor; 1372
1368 int dirstart_save = tc.dirstart; 1373 backup = tc;
1369 int dirlevel_save = tc.dirlevel;
1370 int dirpos_save = tc.dirpos[0];
1371 int cursorpos_save = tc.cursorpos[0];
1372 int* dirfilter_save = tc.dirfilter;
1373 static char currdir_save[MAX_PATH];
1374
1375 memcpy(currdir_save, tc.currdir, sizeof(tc.currdir));
1376 reload_dir = true; 1374 reload_dir = true;
1377 memcpy(tc.currdir, root, sizeof(tc.currdir)); 1375 memcpy(tc.currdir, root, sizeof(tc.currdir));
1378 start_wps = false; 1376 start_wps = false;
1379 tc.dirfilter = &dirfilter; 1377 tc.dirfilter = &dirfilter;
1380 1378
1381 rc = dirbrowse(); 1379 dirbrowse();
1382 1380
1383 memcpy(tc.currdir, currdir_save, sizeof(tc.currdir)); 1381 tc = backup;
1384 reload_dir = true; 1382 reload_dir = true;
1385 tc.dirstart = dirstart_save;
1386 tc.cursorpos[0] = cursorpos_save;
1387 tc.dirlevel = dirlevel_save;
1388 tc.dircursor = dircursor_save;
1389 tc.dirpos[0] = dirpos_save;
1390 tc.dirfilter = dirfilter_save;
1391 1383
1392 return false; 1384 return false;
1393} 1385}