kit/ChildSession.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
New commits: commit a64eebb6ae70b34ed691f1b94e64c73ed98a4fec Author: Jan Holesovsky <ke...@collabora.com> Date: Tue Nov 7 14:30:52 2017 +0100 Save As: If the LOK's saveAs failed, try under a different name. This helps when the caller omitted the extension... Change-Id: Ib7602ce8fa88bc867198dbba36b2582145bd0994 Reviewed-on: https://gerrit.libreoffice.org/44405 Reviewed-by: pranavk <pran...@collabora.co.uk> Tested-by: pranavk <pran...@collabora.co.uk> diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp index ec439918..8103f998 100644 --- a/kit/ChildSession.cpp +++ b/kit/ChildSession.cpp @@ -947,6 +947,27 @@ bool ChildSession::saveAs(const char* /*buffer*/, int /*length*/, const std::vec success = getLOKitDocument()->saveAs(url.c_str(), format.size() == 0 ? nullptr :format.c_str(), filterOptions.size() == 0 ? nullptr : filterOptions.c_str()); + + if (!success) + { + // a desperate try - add an extension hoping that it'll help + bool retry = true; + switch (getLOKitDocument()->getDocumentType()) + { + case LOK_DOCTYPE_TEXT: url += ".odt"; wopiFilename += ".odt"; break; + case LOK_DOCTYPE_SPREADSHEET: url += ".ods"; wopiFilename += ".ods"; break; + case LOK_DOCTYPE_PRESENTATION: url += ".odp"; wopiFilename += ".odp"; break; + case LOK_DOCTYPE_DRAWING: url += ".odg"; wopiFilename += ".odg"; break; + default: retry = false; break; + } + + if (retry) + { + success = getLOKitDocument()->saveAs(url.c_str(), + format.size() == 0 ? nullptr :format.c_str(), + filterOptions.size() == 0 ? nullptr : filterOptions.c_str()); + } + } } std::string encodedURL, encodedWopiFilename; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits