diff --git a/filter/source/config/cache/constant.hxx b/filter/source/config/cache/constant.hxx index c1c37f6a17f4..7e8cc0218a9a 100644 --- a/filter/source/config/cache/constant.hxx +++ b/filter/source/config/cache/constant.hxx @@ -120,6 +120,7 @@ #define FLAGNAME_TEMPLATE "TEMPLATE" #define FLAGNAME_TEMPLATEPATH "TEMPLATEPATH" #define FLAGNAME_COMBINED "COMBINED" +#define FLAGNAME_SUPPORTSSIGNING "SUPPORTSSIGNING" /** @short some uno service names. */ diff --git a/filter/source/config/cache/filtercache.cxx b/filter/source/config/cache/filtercache.cxx index dacad0981133..68a26b6188df 100644 --- a/filter/source/config/cache/filtercache.cxx +++ b/filter/source/config/cache/filtercache.cxx @@ -1935,6 +1935,7 @@ css::uno::Sequence< OUString > FilterCache::impl_convertFlagField2FlagNames(SfxF if (nFlags & SfxFilterFlags::TEMPLATE ) lFlagNames.push_back(FLAGNAME_TEMPLATE ); if (nFlags & SfxFilterFlags::TEMPLATEPATH ) lFlagNames.push_back(FLAGNAME_TEMPLATEPATH ); if (nFlags & SfxFilterFlags::COMBINED ) lFlagNames.push_back(FLAGNAME_COMBINED ); + if (nFlags & SfxFilterFlags::SUPPORTSSIGNING) lFlagNames.push_back(FLAGNAME_SUPPORTSSIGNING); return comphelper::containerToSequence(lFlagNames); } @@ -2025,6 +2026,11 @@ SfxFilterFlags FilterCache::impl_convertFlagNames2FlagField(const css::uno::Sequ nField |= SfxFilterFlags::STARTPRESENTATION; continue; } + if (pNames[i] == FLAGNAME_SUPPORTSSIGNING) + { + nField |= SfxFilterFlags::SUPPORTSSIGNING; + continue; + } if (pNames[i] == FLAGNAME_READONLY) { nField |= SfxFilterFlags::OPENREADONLY; diff --git a/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu b/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu index a295ae3d8d25..30bd1bef7485 100644 --- a/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu +++ b/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu @@ -16,7 +16,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . --> - IMPORT EXPORT ALIEN 3RDPARTYFILTER ENCRYPTION PASSWORDTOMODIFY + IMPORT EXPORT ALIEN 3RDPARTYFILTER ENCRYPTION PASSWORDTOMODIFY SUPPORTSSIGNING com.sun.star.comp.Writer.WriterFilter OXML diff --git a/include/comphelper/documentconstants.hxx b/include/comphelper/documentconstants.hxx index 6e5fb1e26f84..75418535c80f 100644 --- a/include/comphelper/documentconstants.hxx +++ b/include/comphelper/documentconstants.hxx @@ -112,10 +112,11 @@ enum class SfxFilterFlags PASSWORDTOMODIFY = 0x02000000L, PREFERED = 0x10000000L, STARTPRESENTATION = 0x20000000L, + SUPPORTSSIGNING = 0x40000000L, }; namespace o3tl { - template<> struct typed_flags : is_typed_flags {}; + template<> struct typed_flags : is_typed_flags {}; } #define SFX_FILTER_NOTINSTALLED (SfxFilterFlags::MUSTINSTALL | SfxFilterFlags::CONSULTSERVICE) diff --git a/include/sfx2/docfilt.hxx b/include/sfx2/docfilt.hxx index 4a6babb6b7bd..6f45c9780b16 100644 --- a/include/sfx2/docfilt.hxx +++ b/include/sfx2/docfilt.hxx @@ -76,6 +76,8 @@ public: bool IsAllowedAsTemplate() const { return bool(nFormatType & SfxFilterFlags::TEMPLATE); } bool IsOwnFormat() const { return bool(nFormatType & SfxFilterFlags::OWN); } + /// If the filter supports digital signatures. + bool GetSupportsSigning() const { return bool(nFormatType & SfxFilterFlags::SUPPORTSSIGNING); } bool IsOwnTemplateFormat() const { return bool(nFormatType & SfxFilterFlags::TEMPLATEPATH); } bool IsAlienFormat() const { return bool(nFormatType & SfxFilterFlags::ALIEN); } bool CanImport() const { return bool(nFormatType & SfxFilterFlags::IMPORT); } diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx index 4482ca88fbfb..86621d1ce656 100644 --- a/sfx2/source/doc/objserv.cxx +++ b/sfx2/source/doc/objserv.cxx @@ -1379,7 +1379,7 @@ void SfxObjectShell::ImplSign( bool bScriptingContent ) if ( GetMedium() && GetMedium()->GetFilter() && !GetMedium()->GetName().isEmpty() - && ( !GetMedium()->GetFilter()->IsOwnFormat() + && ( (!GetMedium()->GetFilter()->IsOwnFormat() && !GetMedium()->GetFilter()->GetSupportsSigning()) || !GetMedium()->HasStorage_Impl() ) )