From f5b7acac624f07fa95835b6054b8d295901bb1dd Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Thu, 4 Jul 2013 10:55:50 +0200 Subject: [PATCH] bnc#820504 VML import: don't anchor shapes TO_PAGE In theory, this is a problem because Word formats only support AT_CHAR and AS_CHAR, so importing something as AT_PAGE is buggy. In practice, this also leads to unvisible shapes, since f0d001a378c64ea457e722266e60c96522c72e9b. Change-Id: Ie730d67a789ef12734cede1f9b6c27764a66f237 --- oox/source/vml/vmlshape.cxx | 14 ++------------ sw/qa/extras/ooxmlimport/data/n820504.docx | Bin 19810 -> 23684 bytes sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 8 +++++++- .../source/dmapper/DomainMapper_Impl.cxx | 2 +- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index f95b7e1f4244..efd5d750f219 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -456,18 +456,8 @@ void lcl_SetAnchorType(PropertySet& rPropSet, const ShapeTypeModel& rTypeModel) if ( rTypeModel.maPosition == "absolute" ) { - if (rTypeModel.moWrapAnchorX.get() == "page" && rTypeModel.moWrapAnchorY.get() == "page") - { - // I'm not sure if AT_PAGE is always correct here (not sure what the parent that - // the spec talks about can be), but with Writer SwXDrawPage::add() - // always in practice uses this because of pDoc->GetCurrentLayout() being NULL at this point. - rPropSet.setProperty(PROP_AnchorType, text::TextContentAnchorType_AT_PAGE); - } - else - { - // Map to as-character by default, that fixes vertical position of some textframes. - rPropSet.setProperty(PROP_AnchorType, text::TextContentAnchorType_AT_CHARACTER); - } + // Word supports as-character (inline) and at-character only, absolute can't be inline. + rPropSet.setProperty(PROP_AnchorType, text::TextContentAnchorType_AT_CHARACTER); if ( rTypeModel.maPositionVerticalRelative == "page" ) { diff --git a/sw/qa/extras/ooxmlimport/data/n820504.docx b/sw/qa/extras/ooxmlimport/data/n820504.docx index 36279a99dc209cdcbb24808e00a45b19ea05fcfe..3cc2bfaa20815efe513664730063a44a5fb547b5 100644 GIT binary patch delta 5403 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 diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index d53094e23bfa..6d036a816e90 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -532,7 +532,7 @@ void Test::testN764005() CPPUNIT_ASSERT(eValue != text::TextContentAnchorType_AS_CHARACTER); sal_Bool bValue = sal_True; xPropertySet->getPropertyValue("Opaque") >>= bValue; - CPPUNIT_ASSERT_EQUAL(sal_False, bValue); + CPPUNIT_ASSERT_EQUAL(false, bool(bValue)); } void Test::testSmartart() @@ -1455,6 +1455,12 @@ void Test::testN820504() uno::Reference xStyle(xStylesAccess->getByName("Default Style"), uno::UNO_QUERY); // The problem was that the CharColor was set to AUTO (-1) even if we have some default char color set CPPUNIT_ASSERT_EQUAL(sal_Int32(4040635), getProperty(xStyle, "CharColor")); + + // Also, the groupshape was anchored at-page instead of at-character + // (that's incorrect as Word only supports at-character and as-character). + uno::Reference xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, getProperty(xDraws->getByIndex(0), "AnchorType")); } void Test::testFdo43641() diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index af47f15e84c1..ded3f892fa66 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1749,7 +1749,7 @@ void DomainMapper_Impl::PushShapeContext( const uno::Reference< drawing::XShape if (nAnchorType == text::TextContentAnchorType_AT_PAGE) bIsGraphic = false; - if (nAnchorType != text::TextContentAnchorType_AT_PAGE) + if (!m_bInHeaderFooterImport) xProps->setPropertyValue( rPropNameSupplier.GetName( PROP_OPAQUE ), uno::makeAny( true ) );