summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-07-04 10:55:50 +0200
committerMiklos Vajna <vmiklos@suse.cz>2013-07-04 11:18:24 +0200
commitf5b7acac624f07fa95835b6054b8d295901bb1dd (patch)
treead3f8f721ccac4b7018a96051c645996461e78fd
parent25bfc4a4e6fd34c10d352c87e38e36c9303edfd2 (diff)
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
-rw-r--r--oox/source/vml/vmlshape.cxx14
-rw-r--r--sw/qa/extras/ooxmlimport/data/n820504.docxbin19810 -> 23684 bytes
-rw-r--r--sw/qa/extras/ooxmlimport/ooxmlimport.cxx8
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx2
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 36279a99dc20..3cc2bfaa2081 100644
--- a/sw/qa/extras/ooxmlimport/data/n820504.docx
+++ b/sw/qa/extras/ooxmlimport/data/n820504.docx
Binary files differ
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<beans::XPropertySet> 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<sal_Int32>(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<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, getProperty<text::TextContentAnchorType>(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 ) );