summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gui/fileselector.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/gui/fileselector.cpp b/gui/fileselector.cpp
index 7d896e670..aecdd253c 100644
--- a/gui/fileselector.cpp
+++ b/gui/fileselector.cpp
@@ -302,10 +302,7 @@ GUIFileSelector::GUIFileSelector(xml_node<>* node)
// Fetch the file/folder list
std::string value;
DataManager::GetValue(mPathVar, value);
- if (GetFileList(value) != 0 && (mShowNavFolders != 0 || mShowFiles != 0)) {
- GetFileList(DataManager::GetCurrentStoragePath());
- DataManager::SetValue(mPathVar, DataManager::GetCurrentStoragePath());
- }
+ GetFileList(value);
}
GUIFileSelector::~GUIFileSelector()
@@ -640,12 +637,7 @@ int GUIFileSelector::NotifyTouch(TOUCH_STATE state, int x, int y)
else
{
DataManager::SetValue(mPathVar, cwd);
- if (GetFileList(cwd) != 0)
- {
- LOGE("Unable to change folders.\n");
- DataManager::SetValue(mPathVar, oldcwd);
- GetFileList(oldcwd);
- }
+ GetFileList(cwd);
mStart = 0;
scrollingY = 0;
mUpdate = 1;
@@ -772,6 +764,17 @@ int GUIFileSelector::GetFileList(const std::string folder)
if (d == NULL)
{
LOGI("Unable to open '%s'\n", folder.c_str());
+ if (folder != "/" && (mShowNavFolders != 0 || mShowFiles != 0)) {
+ size_t found;
+ found = folder.find_last_of('/');
+ if (found != string::npos) {
+ string new_folder = folder.substr(0, found);
+
+ if (new_folder.length() < 2)
+ new_folder = "/";
+ DataManager::SetValue(mPathVar, new_folder);
+ }
+ }
return -1;
}
@@ -824,10 +827,7 @@ void GUIFileSelector::SetPageFocus(int inFocus)
{
std::string value;
DataManager::GetValue(mPathVar, value);
- if (GetFileList(value) != 0 && (mShowNavFolders != 0 || mShowFiles != 0)) {
- GetFileList(DataManager::GetCurrentStoragePath());
- DataManager::SetValue(mPathVar, DataManager::GetCurrentStoragePath());
- }
+ GetFileList(value);
}
}