diff options
author | Björn Stenberg <bjorn@haxx.se> | 2005-01-18 22:59:29 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2005-01-18 22:59:29 +0000 |
commit | ea1188ce8c7053e191dd665c4036df849e19d2fe (patch) | |
tree | 2003c8f65f31478eebbdb0b15794c7c09d92644f /apps/tree.c | |
parent | cdd79a35d40b314a723752cd40eb03ece79620b9 (diff) | |
download | rockbox-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
Diffstat (limited to 'apps/tree.c')
-rw-r--r-- | apps/tree.c | 28 |
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 | ||
1364 | bool rockbox_browse(const char *root, int dirfilter) | 1369 | bool 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 | } |