From 6f85752705c5e5bdb4eef539f669bc0961f14356 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Fri, 26 Nov 2021 08:45:24 +0100 Subject: sw, viewing OLE objects: also protect "common" embeded objects Commit 4f9f1ac33366817df61c488a9f36b09c592ee939 (sw: allow viewing OLE objects in protected sections, 2021-11-25) allowed launching OLE objects in protected sections, and then made sure that changes done in "real" OLE editors (on Windows) are discarded: both the native data and preview. Extend this mechanism to also handle common embedded objects (i.e. when we load the data into an own document model, like Calc-in-Writer on Linux): there we can simply load the data read-only, so there will be no need to discard anything. This requires some way to pass down the read-only flag from sw/ to embeddedobj, implement XInitialization on OCommonEmbeddedObject to do that. (cherry picked from commit 32842d4bf250bcab281eb71a218d618485c60290) Conflicts: sw/source/uibase/wrtsh/wrtsh1.cxx Change-Id: I7b32d7514a6b0a40b4f58bed57879d292daa4ed7 --- sw/source/uibase/wrtsh/wrtsh1.cxx | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'sw') diff --git a/sw/source/uibase/wrtsh/wrtsh1.cxx b/sw/source/uibase/wrtsh/wrtsh1.cxx index 0dbb7aaf0796..8d369fa50e40 100644 --- a/sw/source/uibase/wrtsh/wrtsh1.cxx +++ b/sw/source/uibase/wrtsh/wrtsh1.cxx @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -98,6 +99,7 @@ #include #include #include +#include #include using namespace sw::mark; @@ -622,6 +624,14 @@ void SwWrtShell::LaunchOLEObj( long nVerb ) if ( !pCli ) pCli = new SwOleClient( &GetView(), &GetView().GetEditWin(), xRef ); + uno::Reference xOLEInit(xRef.GetObject(), uno::UNO_QUERY); + if (xOLEInit.is()) + { + uno::Sequence aArguments + = { comphelper::makePropertyValue("ReadOnly", pCli->IsProtected()) }; + xOLEInit->initialize({ uno::makeAny(aArguments) }); + } + static_cast(pCli)->SetInDoVerb( true ); CalcAndSetScale( xRef ); -- cgit v1.2.1