diff options
Diffstat (limited to 'embeddedobj')
-rw-r--r-- | embeddedobj/source/inc/oleembobj.hxx | 1 | ||||
-rw-r--r-- | embeddedobj/source/msole/oleembed.cxx | 14 |
2 files changed, 8 insertions, 7 deletions
diff --git a/embeddedobj/source/inc/oleembobj.hxx b/embeddedobj/source/inc/oleembobj.hxx index 42152742a0c4..4fa109e8d9c9 100644 --- a/embeddedobj/source/inc/oleembobj.hxx +++ b/embeddedobj/source/inc/oleembobj.hxx @@ -191,6 +191,7 @@ class OleEmbeddedObject : public ::cppu::WeakImplHelper5 // if the following member is set, the object works in wrapper mode ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject > m_xWrappedObject; bool m_bTriedConversion; + OUString m_aFilterName; // if m_bTriedConversion, then the filter detected by that ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xParent; diff --git a/embeddedobj/source/msole/oleembed.cxx b/embeddedobj/source/msole/oleembed.cxx index 144ecf555293..5c9df308897f 100644 --- a/embeddedobj/source/msole/oleembed.cxx +++ b/embeddedobj/source/msole/oleembed.cxx @@ -265,18 +265,18 @@ bool OleEmbeddedObject::TryToConvertToOOo() // the stream must be seekable uno::Reference< io::XSeekable > xSeekable( m_xObjectStream, uno::UNO_QUERY_THROW ); xSeekable->seek( 0 ); - OUString aFilterName = OwnView_Impl::GetFilterNameFromExtentionAndInStream( m_xFactory, OUString(), m_xObjectStream->getInputStream() ); + m_aFilterName = OwnView_Impl::GetFilterNameFromExtentionAndInStream( m_xFactory, OUString(), m_xObjectStream->getInputStream() ); // use the solution only for OOXML format currently - if ( !aFilterName.isEmpty() - && ( aFilterName == "Calc MS Excel 2007 XML" || aFilterName == "Impress MS PowerPoint 2007 XML" || aFilterName == "MS Word 2007 XML" ) ) + if ( !m_aFilterName.isEmpty() + && ( m_aFilterName == "Calc MS Excel 2007 XML" || m_aFilterName == "Impress MS PowerPoint 2007 XML" || m_aFilterName == "MS Word 2007 XML" ) ) { uno::Reference< container::XNameAccess > xFilterFactory( m_xFactory->createInstance("com.sun.star.document.FilterFactory"), uno::UNO_QUERY_THROW ); OUString aDocServiceName; - uno::Any aFilterAnyData = xFilterFactory->getByName( aFilterName ); + uno::Any aFilterAnyData = xFilterFactory->getByName( m_aFilterName ); uno::Sequence< beans::PropertyValue > aFilterData; if ( aFilterAnyData >>= aFilterData ) { @@ -309,7 +309,7 @@ bool OleEmbeddedObject::TryToConvertToOOo() aArgs[1].Name = "ReadOnly"; aArgs[1].Value <<= sal_True; aArgs[2].Name = "FilterName"; - aArgs[2].Value <<= aFilterName; + aArgs[2].Value <<= m_aFilterName; aArgs[3].Name = "URL"; aArgs[3].Value <<= OUString( "private:stream" ); aArgs[4].Name = "InputStream"; @@ -838,7 +838,7 @@ void SAL_CALL OleEmbeddedObject::doVerb( sal_Int32 nVerbID ) } } - if ( !m_pOwnView && m_xObjectStream.is() ) + if ( !m_pOwnView && m_xObjectStream.is() && m_aFilterName != "Text" ) { try { uno::Reference< io::XSeekable > xSeekable( m_xObjectStream, uno::UNO_QUERY ); @@ -859,7 +859,7 @@ void SAL_CALL OleEmbeddedObject::doVerb( sal_Int32 nVerbID ) } } - if ( !m_pOwnView || !m_pOwnView->Open() ) + if ( m_aFilterName != "Text" && (!m_pOwnView || !m_pOwnView->Open()) ) { //Make a RO copy and see if the OS can find something to at //least display the content for us |