diff options
Diffstat (limited to 'embeddedobj/source/msole')
-rw-r--r-- | embeddedobj/source/msole/olemisc.cxx | 14 | ||||
-rw-r--r-- | embeddedobj/source/msole/olepersist.cxx | 3 |
2 files changed, 16 insertions, 1 deletions
diff --git a/embeddedobj/source/msole/olemisc.cxx b/embeddedobj/source/msole/olemisc.cxx index 83485c89d768..2d757a594533 100644 --- a/embeddedobj/source/msole/olemisc.cxx +++ b/embeddedobj/source/msole/olemisc.cxx @@ -29,6 +29,7 @@ #include <com/sun/star/lang/DisposedException.hpp> #include <cppuhelper/interfacecontainer.h> +#include <comphelper/sequenceashashmap.hxx> #include <oleembobj.hxx> #include "olepersist.hxx" @@ -676,4 +677,17 @@ css::uno::Reference<css::io::XStream> OleEmbeddedObject::getStream() return m_xObjectStream; } +void OleEmbeddedObject::initialize(const uno::Sequence<uno::Any>& rArguments) +{ + if (!rArguments.hasElements()) + return; + + comphelper::SequenceAsHashMap aValues(rArguments[0]); + for (const auto& rValue : aValues) + { + if (rValue.first == "StreamReadOnly") + rValue.second >>= m_bStreamReadOnly; + } +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/embeddedobj/source/msole/olepersist.cxx b/embeddedobj/source/msole/olepersist.cxx index eedc8c4fe63b..df78e09291ce 100644 --- a/embeddedobj/source/msole/olepersist.cxx +++ b/embeddedobj/source/msole/olepersist.cxx @@ -1201,7 +1201,8 @@ void OleEmbeddedObject::StoreToLocation_Impl( if ( !xCachedVisualRepresentation.is() ) xCachedVisualRepresentation = TryToRetrieveCachedVisualRepresentation_Impl( xTargetStream ); - RemoveVisualCache_Impl( xTargetStream ); + if (!m_bStreamReadOnly) + RemoveVisualCache_Impl(xTargetStream); } } |