Kaydet (Commit) d15d3d92 authored tarafından Szymon Kłos's avatar Szymon Kłos

tdf#108545 editable DOC/XLS embeddings inside DOCX

Change-Id: Ia6cbe829f94b3f27e4ea633c02d6b1ec6e98e984
Reviewed-on: https://gerrit.libreoffice.org/39860Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarSzymon Kłos <szymon.klos@collabora.com>
üst 2caaf9bf
......@@ -268,9 +268,9 @@ bool OleEmbeddedObject::TryToConvertToOOo( const uno::Reference< io::XStream >&
xSeekable->seek( 0 );
m_aFilterName = OwnView_Impl::GetFilterNameFromExtentionAndInStream( m_xFactory, OUString(), xStream->getInputStream() );
// use the solution only for OOXML format currently
if ( !m_aFilterName.isEmpty()
&& ( m_aFilterName == "Calc MS Excel 2007 XML" || m_aFilterName == "Impress MS PowerPoint 2007 XML" || m_aFilterName == "MS Word 2007 XML" ) )
&& ( m_aFilterName == "Calc MS Excel 2007 XML" || m_aFilterName == "Impress MS PowerPoint 2007 XML" || m_aFilterName == "MS Word 2007 XML"
|| m_aFilterName == "MS Excel 97 Vorlage/Template" || m_aFilterName == "MS Word 97 Vorlage" ) )
{
uno::Reference< container::XNameAccess > xFilterFactory(
m_xFactory->createInstance("com.sun.star.document.FilterFactory"),
......@@ -913,7 +913,7 @@ void SAL_CALL OleEmbeddedObject::doVerb( sal_Int32 nVerbID )
m_bTriedConversion = true;
if ( TryToConvertToOOo( m_xObjectStream ) )
{
changeState( embed::EmbedStates::UI_ACTIVE );
changeState( embed::EmbedStates::ACTIVE );
return;
}
}
......
......@@ -2986,7 +2986,28 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan
pDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::INSERT, nullptr);
SwFlyFrameFormat* pFrameFormat = nullptr;
pFrameFormat = pDoc->getIDocumentContentOperations().InsertOLE( aPam, sStreamName, embed::Aspects::MSOLE_CONTENT, &aFrameSet, nullptr );
pFrameFormat = pDoc->getIDocumentContentOperations().InsertOLE( aPam, sStreamName, m_nDrawAspect, &aFrameSet, nullptr );
// store main document name to show in the title bar
SwOLENode* pNd = nullptr;
const SwNodeIndex* pIdx = pFrameFormat->GetContent().GetContentIdx();
if( pIdx )
{
SwNodeIndex aIdx( *pIdx, 1 );
SwNoTextNode* pNoText = aIdx.GetNode().GetNoTextNode();
pNd = pNoText->GetOLENode();
}
if( pNd )
{
uno::Reference < embed::XEmbeddedObject > xObj = pNd->GetOLEObj().GetOleRef();
if( xObj.is() )
{
uno::Reference< frame::XTitle > xModelTitle( pDoc->GetDocShell()->GetModel(), css::uno::UNO_QUERY );
if( xModelTitle.is() )
xObj->setContainerName( xModelTitle->getTitle() );
}
}
pDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::INSERT, nullptr);
pFrameFormat->Add(this);
if(!m_sName.isEmpty())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment