diff options
author | Jan-Marek Glogowski <jan-marek.glogowski@extern.cib.de> | 2019-10-11 13:09:59 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@cib.de> | 2019-10-17 10:52:45 +0200 |
commit | 7b405877b0fa0145513ac0294ab51cf57e6108c6 (patch) | |
tree | 61e19716c65ef02a2a7d091897dbdad75e0a1b5a /sfx2 | |
parent | 4d4e36173857e948b700c5796552724b23ee775f (diff) |
tdf#42316 handle saving to template filters
This extends the filter comparison from commit c3a1c83ff5af
("tdf#42316 preserve macro signature of templates").
The original patch just stripped "_template" from the source
filter to find equal document types, which just enables the
"template => document" case. This patch also strips the
"_template" from the target filter, which fixes the "document
or template => template" cases.
This also extends the signing save tests:
* OTT 1.2 => OTT 1.2 - preserve
* ODT 1.2 => OTT 1.2 - preserve
* OTT 1.0 => OTT 1.0 - preserve
* ODT 1.0 => OTT 1.0 - preserve
* OTT 1.0 => OTT 1.2 - drop
Change-Id: Ie297258a4d9f9aa4beb25786c6ba240b6f16f49b
Reviewed-on: https://gerrit.libreoffice.org/80654
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
(cherry picked from commit 4aa6e2cb2245eddab87fb451add94159a7604246)
Reviewed-on: https://gerrit.libreoffice.org/80910
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/doc/objstor.cxx | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index 651258d1fdec..b3092cd1cce8 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -1091,6 +1091,15 @@ private: }; } +static OUString lcl_strip_template(const OUString &aString) +{ + static const OUString sPostfix("_template"); + OUString sRes(aString); + if (sRes.endsWith(sPostfix)) + sRes = sRes.copy(0, sRes.getLength() - sPostfix.getLength()); + return sRes; +} + bool SfxObjectShell::SaveTo_Impl ( SfxMedium &rMedium, // Medium, in which it will be stored @@ -1170,10 +1179,8 @@ bool SfxObjectShell::SaveTo_Impl // preserve only if the same filter has been used // for templates, strip the _template from the filter name for comparison - OUString aMediumFilter = pMedium->GetFilter()->GetFilterName(); - if (aMediumFilter.endsWith("_template")) - aMediumFilter = aMediumFilter.copy(0, aMediumFilter.getLength() - 9); - bTryToPreserveScriptSignature = pMedium->GetFilter() && pFilter && aMediumFilter == pFilter->GetFilterName(); + const OUString aMediumFilter = lcl_strip_template(pMedium->GetFilter()->GetFilterName()); + bTryToPreserveScriptSignature = pMedium->GetFilter() && pFilter && aMediumFilter == lcl_strip_template(pFilter->GetFilterName()); // signatures were specified in ODF 1.2 but were used since much longer. // LO will still correctly validate an old style signature on an ODF 1.2 |