desktop/source/lib/init.cxx                        |    9 ++++++++-
 filter/source/storagefilterdetect/filterdetect.cxx |    7 +++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

New commits:
commit 49f8a7333bddceb3b8bd18d81ff593fa39f5a437
Author:     Mert Tumer <mert.tu...@collabora.com>
AuthorDate: Wed Apr 6 16:59:53 2022 +0300
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Apr 6 22:20:14 2022 +0200

    lok: load template documents as regular documents
    
    otherwise lok cannot save them directly because
    libreoffice will try to open a save-as dialog
    For odg, change the draw8_template type draw8
    
    Signed-off-by: Mert Tumer <mert.tu...@collabora.com>
    Change-Id: I34b0ed03adcac89eaa926f8ae6c57e6f622a90f0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132633
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Henry Castro <hcas...@collabora.com>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 5721b56573d6..f3396a3f4bc7 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2380,7 +2380,7 @@ static LibreOfficeKitDocument* 
lo_documentLoadWithOptions(LibreOfficeKit* pThis,
              Application::SetDialogCancelMode(DialogCancelMode::LOKSilent);
         }
 
-        uno::Sequence<css::beans::PropertyValue> aFilterOptions(3);
+        uno::Sequence<css::beans::PropertyValue> aFilterOptions(4);
         aFilterOptions[0] = css::beans::PropertyValue( "FilterOptions",
                                                        0,
                                                        uno::makeAny(aOptions),
@@ -2427,6 +2427,13 @@ static LibreOfficeKitDocument* 
lo_documentLoadWithOptions(LibreOfficeKit* pThis,
         aFilterOptions[3].Value <<= nUpdateDoc;
         */
 
+        // set this explicitly false to be able to load template files
+        // as regular files, otherwise we cannot save them; it will try
+        // to bring saveas dialog which cannot work with LOK case
+        aFilterOptions[3].Name = "AsTemplate";
+        aFilterOptions[3].Value <<= false;
+
+
         const int nThisDocumentId = nDocumentIdCounter++;
         SfxViewShell::SetCurrentDocId(ViewShellDocId(nThisDocumentId));
         uno::Reference<lang::XComponent> xComponent = 
xComponentLoader->loadComponentFromURL(
diff --git a/filter/source/storagefilterdetect/filterdetect.cxx 
b/filter/source/storagefilterdetect/filterdetect.cxx
index 02ed875c6699..694251c389b3 100644
--- a/filter/source/storagefilterdetect/filterdetect.cxx
+++ b/filter/source/storagefilterdetect/filterdetect.cxx
@@ -33,6 +33,8 @@
 #include <com/sun/star/packages/zip/ZipIOException.hpp>
 #include <com/sun/star/task/XInteractionHandler.hpp>
 
+#include <comphelper/lok.hxx>
+
 using namespace ::com::sun::star;
 using utl::MediaDescriptor;
 
@@ -103,6 +105,11 @@ OUString SAL_CALL 
StorageFilterDetect::detect(uno::Sequence<beans::PropertyValue
         OUString aMediaType;
         xStorageProperties->getPropertyValue( "MediaType" ) >>= aMediaType;
         aTypeName = getInternalFromMediaType( aMediaType );
+        if (comphelper::LibreOfficeKit::isActive() && aTypeName == 
"draw8_template")
+        {
+            // save it as draw8 instead of template format
+            aTypeName = "draw8";
+        }
     }
 
     catch( const lang::WrappedTargetException& aWrap )

Reply via email to