Gamelist: Fix 'Open Containing Folder'
Fix Gamelist context menu item 'Open Containing Folder' opening wrong target on Windows when game parent folder is [foobar] and grandparent folder contains file [foobar].bat or [foobar].exe Add trailing directory separator to parent folder path to force Windows to interpret path as directory. Fixes https://bugs.dolphin-emu.org/issues/12411
This commit is contained in:
parent
18d95dfcca
commit
48273b401e
|
@ -38,6 +38,7 @@
|
||||||
#include <QTableView>
|
#include <QTableView>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
|
||||||
|
#include "Common/CommonPaths.h"
|
||||||
#include "Common/FileUtil.h"
|
#include "Common/FileUtil.h"
|
||||||
|
|
||||||
#include "Core/Config/MainSettings.h"
|
#include "Core/Config/MainSettings.h"
|
||||||
|
@ -576,8 +577,18 @@ void GameList::OpenContainingFolder()
|
||||||
if (!game)
|
if (!game)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QUrl url = QUrl::fromLocalFile(
|
// Remove everything after the last separator in the game's path, resulting in the parent
|
||||||
QFileInfo(QString::fromStdString(game->GetFilePath())).dir().absolutePath());
|
// directory path with a trailing separator. Keeping the trailing separator prevents Windows from
|
||||||
|
// mistakenly opening a .bat or .exe file in the grandparent folder when that file has the same
|
||||||
|
// base name as the folder (See https://bugs.dolphin-emu.org/issues/12411).
|
||||||
|
std::string parent_directory_path;
|
||||||
|
SplitPath(game->GetFilePath(), &parent_directory_path, nullptr, nullptr);
|
||||||
|
if (parent_directory_path.empty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QUrl url = QUrl::fromLocalFile(QString::fromStdString(parent_directory_path));
|
||||||
QDesktopServices::openUrl(url);
|
QDesktopServices::openUrl(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue