Kaydet (Commit) f5b7acac authored tarafından Miklos Vajna's avatar Miklos Vajna

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
f0d001a3.

Change-Id: Ie730d67a789ef12734cede1f9b6c27764a66f237
üst 25bfc4a4
...@@ -456,18 +456,8 @@ void lcl_SetAnchorType(PropertySet& rPropSet, const ShapeTypeModel& rTypeModel) ...@@ -456,18 +456,8 @@ void lcl_SetAnchorType(PropertySet& rPropSet, const ShapeTypeModel& rTypeModel)
if ( rTypeModel.maPosition == "absolute" ) if ( rTypeModel.maPosition == "absolute" )
{ {
if (rTypeModel.moWrapAnchorX.get() == "page" && rTypeModel.moWrapAnchorY.get() == "page") // Word supports as-character (inline) and at-character only, absolute can't be inline.
{ rPropSet.setProperty(PROP_AnchorType, text::TextContentAnchorType_AT_CHARACTER);
// 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);
}
if ( rTypeModel.maPositionVerticalRelative == "page" ) if ( rTypeModel.maPositionVerticalRelative == "page" )
{ {
......
...@@ -532,7 +532,7 @@ void Test::testN764005() ...@@ -532,7 +532,7 @@ void Test::testN764005()
CPPUNIT_ASSERT(eValue != text::TextContentAnchorType_AS_CHARACTER); CPPUNIT_ASSERT(eValue != text::TextContentAnchorType_AS_CHARACTER);
sal_Bool bValue = sal_True; sal_Bool bValue = sal_True;
xPropertySet->getPropertyValue("Opaque") >>= bValue; xPropertySet->getPropertyValue("Opaque") >>= bValue;
CPPUNIT_ASSERT_EQUAL(sal_False, bValue); CPPUNIT_ASSERT_EQUAL(false, bool(bValue));
} }
void Test::testSmartart() void Test::testSmartart()
...@@ -1455,6 +1455,12 @@ void Test::testN820504() ...@@ -1455,6 +1455,12 @@ void Test::testN820504()
uno::Reference<beans::XPropertySet> xStyle(xStylesAccess->getByName("Default Style"), uno::UNO_QUERY); 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 // 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")); 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() void Test::testFdo43641()
......
...@@ -1749,7 +1749,7 @@ void DomainMapper_Impl::PushShapeContext( const uno::Reference< drawing::XShape ...@@ -1749,7 +1749,7 @@ void DomainMapper_Impl::PushShapeContext( const uno::Reference< drawing::XShape
if (nAnchorType == text::TextContentAnchorType_AT_PAGE) if (nAnchorType == text::TextContentAnchorType_AT_PAGE)
bIsGraphic = false; bIsGraphic = false;
if (nAnchorType != text::TextContentAnchorType_AT_PAGE) if (!m_bInHeaderFooterImport)
xProps->setPropertyValue( xProps->setPropertyValue(
rPropNameSupplier.GetName( PROP_OPAQUE ), rPropNameSupplier.GetName( PROP_OPAQUE ),
uno::makeAny( true ) ); uno::makeAny( true ) );
......
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