diff options
author | Vinaya Mandke <vinaya.mandke@synerzip.com> | 2014-01-08 18:54:51 +0530 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-01-13 17:48:18 +0100 |
commit | c4ff46485f0461de6a2804ae859dbbc81b6af105 (patch) | |
tree | b314c4ec6ea2da7ddf85c5f091a7755e5c9d9a83 /filter | |
parent | 4a68f12691d4fd77652d824ccb4147e8ce643182 (diff) |
fdo#65833 Fix to preserve VML Canvas Information
Grab-bagged the "editas" attribute of v:group and added UT for
the same
Please verify this fix on MS Office 2007 as it renders the mc:Fallback VML part
Conflicts:
sw/qa/extras/ooxmlexport/ooxmlexport.cxx
Reviewed on:
https://gerrit.libreoffice.org/7335
Change-Id: I4e4456997621089967514009005ee775b71d6d69
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/msfilter/escherex.cxx | 5 | ||||
-rw-r--r-- | filter/source/msfilter/eschesdo.cxx | 24 |
2 files changed, 29 insertions, 0 deletions
diff --git a/filter/source/msfilter/escherex.cxx b/filter/source/msfilter/escherex.cxx index 782dcfcecaaf..129831e396f2 100644 --- a/filter/source/msfilter/escherex.cxx +++ b/filter/source/msfilter/escherex.cxx @@ -5081,6 +5081,11 @@ void EscherEx::ReplacePersistOffset( sal_uInt32 nKey, sal_uInt32 nOffset ) PtReplace( ESCHER_Persist_PrivateEntry | nKey, nOffset ); } +void EscherEx::SetEditAs( OUString rEditAs ) +{ + mEditAs = rEditAs; +} + sal_uInt32 EscherEx::GetPersistOffset( sal_uInt32 nKey ) { return PtGetOffsetByID( ESCHER_Persist_PrivateEntry | nKey ); diff --git a/filter/source/msfilter/eschesdo.cxx b/filter/source/msfilter/eschesdo.cxx index 16311df438e3..fa697ee0beae 100644 --- a/filter/source/msfilter/eschesdo.cxx +++ b/filter/source/msfilter/eschesdo.cxx @@ -191,6 +191,30 @@ sal_uInt32 ImplEESdrWriter::ImplWriteShape( ImplEESdrObject& rObj, if( const SdrObject* pSdrObj = rObj.GetSdrObject() ) if (!pSdrObj->GetName().isEmpty()) aShapeName = pSdrObj->GetName(); + uno::Reference< drawing::XShape> mXShape(rObj.GetShapeRef(), uno::UNO_QUERY); + if (mXShape.is()) + { + uno::Reference<beans::XPropertySet> xPropertySet(mXShape, uno::UNO_QUERY); + if (xPropertySet.is()) + { + uno::Sequence<beans::PropertyValue> aGrabBag; + uno::Reference< XPropertySetInfo > xPropInfo = xPropertySet->getPropertySetInfo(); + if ( xPropInfo.is() && xPropInfo->hasPropertyByName( "InteropGrabBag" ) ) + { + xPropertySet->getPropertyValue( "InteropGrabBag" ) >>= aGrabBag; + for (int i=0; i< aGrabBag.getLength(); i++) + { + if (aGrabBag[i].Name == "mso-edit-as") + { + OUString rEditAs; + aGrabBag[i].Value >>= rEditAs; + mpEscherEx->SetEditAs(rEditAs); + break; + } + } + } + } + } Point aTextRefPoint; |