summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/coreplugin/fileutils.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/plugins/coreplugin/fileutils.cpp b/src/plugins/coreplugin/fileutils.cpp
index 1bc9e16608..3808588da7 100644
--- a/src/plugins/coreplugin/fileutils.cpp
+++ b/src/plugins/coreplugin/fileutils.cpp
@@ -34,6 +34,7 @@
#include <utils/consoleprocess.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h>
+#include <utils/qtcprocess.h>
#include <utils/textfileformat.h>
#include <utils/unixutils.h>
@@ -102,12 +103,23 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const QString &pathIn)
// we cannot select a file here, because no file browser really supports it...
const QString folder = fileInfo.isDir() ? fileInfo.absoluteFilePath() : fileInfo.filePath();
const QString app = UnixUtils::fileBrowser(ICore::settings());
- QProcess browserProc;
- const QString browserArgs = UnixUtils::substituteFileBrowserParameters(app, folder);
- bool success = browserProc.startDetached(browserArgs);
- const QString error = QString::fromLocal8Bit(browserProc.readAllStandardError());
- success = success && error.isEmpty();
- if (!success)
+ QStringList browserArgs = Utils::QtcProcess::splitArgs(
+ UnixUtils::substituteFileBrowserParameters(app, folder));
+ QString error;
+ if (browserArgs.isEmpty()) {
+ error = QApplication::translate("Core::Internal",
+ "The command for file browser is not set.");
+ } else {
+ QProcess browserProc;
+ browserProc.setProgram(browserArgs.takeFirst());
+ browserProc.setArguments(browserArgs);
+ const bool success = browserProc.startDetached();
+ error = QString::fromLocal8Bit(browserProc.readAllStandardError());
+ if (!success && error.isEmpty())
+ error = QApplication::translate("Core::Internal",
+ "Error while starting file browser.");
+ }
+ if (!error.isEmpty())
showGraphicalShellError(parent, app, error);
}
}