Add / to the unix shortcut drive list
Also made `get_current_drive()` to pick the longest match on Unix.
This commit is contained in:
parent
1930fc8b31
commit
67f04b381b
|
@ -119,13 +119,19 @@
|
|||
<return type="String" />
|
||||
<argument index="0" name="idx" type="int" />
|
||||
<description>
|
||||
On Windows, returns the name of the drive (partition) passed as an argument (e.g. [code]C:[/code]). On other platforms, or if the requested drive does not exist, the method returns an empty String.
|
||||
On Windows, returns the name of the drive (partition) passed as an argument (e.g. [code]C:[/code]).
|
||||
On macOS, returns the path to the mounted volume passed as an argument.
|
||||
On Linux, returns the path to the mounted volume or GTK 3 bookmark passed as an argument.
|
||||
On other platforms, or if the requested drive does not exist, the method returns an empty String.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_drive_count">
|
||||
<return type="int" />
|
||||
<description>
|
||||
On Windows, returns the number of drives (partitions) mounted on the current filesystem. On other platforms, the method returns 0.
|
||||
On Windows, returns the number of drives (partitions) mounted on the current filesystem.
|
||||
On macOS, returns the number of mounted volumes.
|
||||
On Linux, returns the number of mounted volumes and GTK 3 bookmarks.
|
||||
On other platforms, the method returns 0.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_files">
|
||||
|
|
|
@ -216,6 +216,8 @@ static bool _filter_drive(struct mntent *mnt) {
|
|||
#endif
|
||||
|
||||
static void _get_drives(List<String> *list) {
|
||||
list->push_back("/");
|
||||
|
||||
#if defined(HAVE_MNTENT) && defined(X11_ENABLED)
|
||||
// Check /etc/mtab for the list of mounted partitions
|
||||
FILE *mtab = setmntent("/etc/mtab", "r");
|
||||
|
@ -286,6 +288,20 @@ String DirAccessUnix::get_drive(int p_drive) {
|
|||
return list[p_drive];
|
||||
}
|
||||
|
||||
int DirAccessUnix::get_current_drive() {
|
||||
int drive = 0;
|
||||
int max_length = -1;
|
||||
const String path = get_current_dir().to_lower();
|
||||
for (int i = 0; i < get_drive_count(); i++) {
|
||||
const String d = get_drive(i).to_lower();
|
||||
if (max_length < d.length() && path.begins_with(d)) {
|
||||
max_length = d.length();
|
||||
drive = i;
|
||||
}
|
||||
}
|
||||
return drive;
|
||||
}
|
||||
|
||||
bool DirAccessUnix::drives_are_shortcuts() {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -63,6 +63,7 @@ public:
|
|||
|
||||
virtual int get_drive_count();
|
||||
virtual String get_drive(int p_drive);
|
||||
virtual int get_current_drive();
|
||||
virtual bool drives_are_shortcuts();
|
||||
|
||||
virtual Error change_dir(String p_dir); ///< can be relative or absolute, return false on success
|
||||
|
|
Loading…
Reference in New Issue