[Scummvm-git-logs] scummvm master -> 3ee5a99619d33dda4d0de97d9c49d855b039bb34
antoniou79
noreply at scummvm.org
Wed Mar 2 12:39:15 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3ee5a99619 ANDROID: More safeguards against empty path in browser
Commit: 3ee5a99619d33dda4d0de97d9c49d855b039bb34
https://github.com/scummvm/scummvm/commit/3ee5a99619d33dda4d0de97d9c49d855b039bb34
Author: Antoniou Athanasios (a.antoniou79 at gmail.com)
Date: 2022-03-02T14:29:56+02:00
Commit Message:
ANDROID: More safeguards against empty path in browser
Changed paths:
backends/fs/posix/posix-fs.cpp
gui/browser.cpp
diff --git a/backends/fs/posix/posix-fs.cpp b/backends/fs/posix/posix-fs.cpp
index 7e72d450cf4..f5a0cc17ed0 100644
--- a/backends/fs/posix/posix-fs.cpp
+++ b/backends/fs/posix/posix-fs.cpp
@@ -271,6 +271,12 @@ AbstractFSNode *POSIXFilesystemNode::getParent() const {
if (_path.size() == 3 && _path.hasSuffix(":/"))
// This is a root directory of a drive
return makeNode("/"); // return a virtual root for a list of drives
+#elif defined(ANDROID_PLAIN_PORT)
+ Common::String pathCopy = _path;
+ pathCopy.trim();
+ if (pathCopy.empty()) {
+ return makeNode("/"); // return a virtual root for a list of drives
+ }
#endif
const char *start = _path.c_str();
diff --git a/gui/browser.cpp b/gui/browser.cpp
index 0b677ab152c..56689cab004 100644
--- a/gui/browser.cpp
+++ b/gui/browser.cpp
@@ -103,15 +103,23 @@ void BrowserDialog::open() {
// Call super implementation
Dialog::open();
- if (ConfMan.hasKey("browser_lastpath"))
- _node = Common::FSNode(ConfMan.get("browser_lastpath"));
#if defined(ANDROID_PLAIN_PORT)
- else { // !ConfMan.hasKey("browser_lastpath"))
- // Currently, the "default" path in Android port will present a list of shortcuts, (most of) which should be usable.
- // The "/" will list these shortcuts (see POSIXFilesystemNode::getChildren())
- _node = Common::FSNode("/");
+ // Currently, the "default" path in Android port will present a list of shortcuts, (most of) which should be usable.
+ // The "/" will list these shortcuts (see POSIXFilesystemNode::getChildren())
+ Common::String blPath = "/";
+ if (ConfMan.hasKey("browser_lastpath")) {
+ Common::String blPathCandidate = ConfMan.get("browser_lastpath");
+ blPathCandidate.trim();
+ if (!blPathCandidate.empty()) {
+ blPath = blPathCandidate;
+ }
}
-#endif // defined(ANDROID_PLAIN_PORT)
+ _node = Common::FSNode(blPath);
+#else
+ if (ConfMan.hasKey("browser_lastpath")
+ _node = Common::FSNode(ConfMan.get("browser_lastpath"));
+#endif
+
if (!_node.isDirectory())
_node = Common::FSNode(".");
@@ -125,7 +133,23 @@ void BrowserDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
switch (cmd) {
//Search for typed-in directory
case kPathEditedCmd:
+#if defined(ANDROID_PLAIN_PORT)
+ {
+ // Currently, the "default" path in Android port will present a list of shortcuts, (most of) which should be usable.
+ // The "/" will list these shortcuts (see POSIXFilesystemNode::getChildren())
+ // If the user enters an empty text or blank spaces for the path, then upon committing it as an edit,
+ // Android will show the list of shortcuts and default the path text field to "/".
+ // The code is placed in brackets for edtPath var to have proper local scope in this particular switch case.
+ Common::String edtPath = Common::convertFromU32String(_currentPath->getEditString());
+ edtPath.trim();
+ if (edtPath.empty()) {
+ edtPath = "/";
+ }
+ _node = Common::FSNode(edtPath);
+ }
+#else
_node = Common::FSNode(Common::convertFromU32String(_currentPath->getEditString()));
+#endif
updateListing();
break;
//Search by text input
More information about the Scummvm-git-logs
mailing list