From 39ecd37d27064523f67bef30f0cc6c7f36977a88 Mon Sep 17 00:00:00 2001 From: Daniel Trujillo Viedma Date: Wed, 11 Oct 2017 09:43:49 +0200 Subject: [PATCH] Fix fault in #6401: append extensions only when saving --- src/openrct2-ui/UiContext.Linux.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/openrct2-ui/UiContext.Linux.cpp b/src/openrct2-ui/UiContext.Linux.cpp index 5b79f1fdef..9a8ae80260 100644 --- a/src/openrct2-ui/UiContext.Linux.cpp +++ b/src/openrct2-ui/UiContext.Linux.cpp @@ -160,20 +160,27 @@ namespace OpenRCT2 { namespace Ui std::string output; if (Execute(cmd, &output) == 0) { - // The default file extension is taken from the **first** available filter, since - // we cannot obtain it from zenity's output. This means that the FileDialogDesc::Filters - // array must be carefully populated, at least the first element. - std::string pattern = desc.Filters[0].Pattern; - std::string defaultExtension = pattern.substr(pattern.find_last_of('.')); - int dotPosition = output.size() - defaultExtension.size(); - // Add the default extension if no extension is specified - if (output.substr(dotPosition, defaultExtension.size()).compare(defaultExtension) == 0) + if (desc.Type == FILE_DIALOG_TYPE::SAVE) { - result = output; + // The default file extension is taken from the **first** available filter, since + // we cannot obtain it from zenity's output. This means that the FileDialogDesc::Filters + // array must be carefully populated, at least the first element. + std::string pattern = desc.Filters[0].Pattern; + std::string defaultExtension = pattern.substr(pattern.find_last_of('.')); + int dotPosition = output.size() - defaultExtension.size(); + // Add the default extension if no extension is specified + if (output.substr(dotPosition, defaultExtension.size()).compare(defaultExtension) == 0) + { + result = output; + } + else + { + result = output.append(defaultExtension); + } } else { - result = output.append(defaultExtension); + result = output; } } break;