diff options
-rw-r--r-- | plugingui/filebrowser.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/plugingui/filebrowser.cc b/plugingui/filebrowser.cc index 26d58b1..6aaa6b7 100644 --- a/plugingui/filebrowser.cc +++ b/plugingui/filebrowser.cc @@ -52,9 +52,9 @@ struct GUI::FileBrowser::private_data { void (*filesel_handler)(void *, std::string); void *ptr; Directory *dir; -//#ifdef WIN32 -// int drvidx; -//#endif +#ifdef WIN32 + bool above_root; +#endif }; static void cancel(void *ptr) @@ -78,9 +78,10 @@ static void changeDir(void *ptr) { INFO(filebrowser, "Changing path to '%s'\n", (dir->path() + "/" + value).c_str()); #ifdef WIN32 - if(!value.empty() && Directory::isRoot(dir->path())) { + if(prv->above_root && !value.empty()) { dir->setPath(value); - return; + value.clear(); + prv->above_root = false; } #endif @@ -115,6 +116,7 @@ static void changeDir(void *ptr) { item.value = name; items.push_back(item); } + prv->above_root = true; } else { #endif @@ -226,6 +228,9 @@ GUI::FileBrowser::FileBrowser(GUI::Widget *parent) prv->filesel_handler = NULL; prv->dir = new Directory(Directory::cwd()); +#ifdef WIN32 + prv->above_root = false; +#endif lbl_path.setText("Path:"); |