diff options
-rw-r--r-- | gui/fileselector.cpp | 28 |
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); } } |