diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2021-08-25 08:42:39 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-08-25 18:11:43 +0200 |
commit | c6f25506b02fbd2a087b7e790283921bf8550206 (patch) | |
tree | ddf8257b16946884e42b857f3f3661c910e1a529 /oox | |
parent | 8befed1f019061cd0b0ef06f6b717f5bc77afdee (diff) |
i#114206 sd: unshare shape properties for the same type before insertion
Regression from commit 9bd99c08e8662becdd5ac8b47ef6f953c14e65fc
(CWS-TOOLING: integrate CWS os128, 2009-06-03), the problem was that the
SvxItemPropertySet was both used to store a property map (information
about UNO properties) and also as a descriptor for a not yet inserted
shape.
The above commit improved performance by sharing a single instance of an
SvxItemPropertySet for the same shape types: this works for the property
map, but doing the same for property values is problematic.
In practice, this eliminates the need for a workaround in oox/, the
user-visible problem was that loading a document with smartart, then
loading a document with group shapes (but without smartart) and saving
it would copy information from the first, closed document (!) to the
second document.
Just removing the oox/ workaround would make
make -C oox -sr CppunitTest_oox_drawingml CPPUNIT_TEST_NAME="testGroupShapeSmartArt testTdf131082"
fail, unsharing the descriptor piece makes it pass again.
Change-Id: Icdff2108ad0da18ce0ade081b1938dd74bc0ae90
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120996
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/drawingml/shape.cxx | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index b4079c7b6831..fe38fa6b371d 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -980,14 +980,6 @@ Reference< XShape > const & Shape::createAndInsert( if ( !mxShape.is() ) { mxShape.set( xServiceFact->createInstance( aServiceName ), UNO_QUERY_THROW ); - if (aServiceName == "com.sun.star.drawing.GroupShape") - { - // TODO why is this necessary? A newly created group shape should have an empty - // grab-bag. - uno::Reference<beans::XPropertySet> xPropertySet(mxShape, uno::UNO_QUERY); - beans::PropertyValues aVals; - xPropertySet->setPropertyValue("InteropGrabBag", uno::makeAny(aVals)); - } } Reference< XPropertySet > xSet( mxShape, UNO_QUERY ); |