[Libreoffice-commits] core.git: sw/qa xmloff/source
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Tue Apr 30 07:12:10 UTC 2019
sw/qa/extras/odfexport/data/btlr-frame.odt |binary
sw/qa/extras/odfexport/odfexport.cxx | 12 ++++++++++++
xmloff/source/style/prhdlfac.cxx | 1 +
xmloff/source/style/xmlexppr.cxx | 15 ++++++++++++++-
xmloff/source/text/txtprmap.cxx | 1 +
5 files changed, 28 insertions(+), 1 deletion(-)
New commits:
commit cd2a7acd789297e613424a59b2fe24cedd9a72b6
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Mon Apr 29 20:01:21 2019 +0200
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Tue Apr 30 09:11:07 2019 +0200
sw btlr writing mode: implement ODF filter for textframes
Layout is still not yet correct right after the import, though.
Change-Id: Icdba2e8d608f35b6b5b43b88ffb223f779af1b89
Reviewed-on: https://gerrit.libreoffice.org/71552
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
diff --git a/sw/qa/extras/odfexport/data/btlr-frame.odt b/sw/qa/extras/odfexport/data/btlr-frame.odt
new file mode 100644
index 000000000000..31cb03849c53
Binary files /dev/null and b/sw/qa/extras/odfexport/data/btlr-frame.odt differ
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index 8348438437a1..4ef1128d3118 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -1409,6 +1409,18 @@ DECLARE_ODFEXPORT_TEST(testBtlrCell, "btlr-cell.odt")
CPPUNIT_ASSERT_EQUAL(text::WritingMode2::TB_RL, getProperty<sal_Int16>(xC1, "WritingMode"));
}
+DECLARE_ODFEXPORT_TEST(testBtlrFrame, "btlr-frame.odt")
+{
+ // Without the accompanying fix in place, this test would have failed, as
+ // the btlr text direction in the text frame was lost on ODF import and
+ // export.
+ uno::Reference<beans::XPropertySet> xTextFrame(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xTextFrame.is());
+
+ auto nActual = getProperty<sal_Int16>(xTextFrame, "WritingMode");
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR, nActual);
+}
+
DECLARE_ODFEXPORT_TEST(testFdo86963, "fdo86963.odt")
{
// Export of this document failed with beans::UnknownPropertyException.
diff --git a/xmloff/source/style/prhdlfac.cxx b/xmloff/source/style/prhdlfac.cxx
index a67fa04c781b..8dede8e8faa3 100644
--- a/xmloff/source/style/prhdlfac.cxx
+++ b/xmloff/source/style/prhdlfac.cxx
@@ -91,6 +91,7 @@ static SvXMLEnumMapEntry<sal_uInt16> const aXML_WritingDirection_Enum[] =
{ XML_RL_TB, text::WritingMode2::RL_TB },
{ XML_TB_RL, text::WritingMode2::TB_RL },
{ XML_TB_LR, text::WritingMode2::TB_LR },
+ { XML_BT_LR, text::WritingMode2::BT_LR },
// alternative names of the above, as accepted by XSL
{ XML_LR, text::WritingMode2::LR_TB },
diff --git a/xmloff/source/style/xmlexppr.cxx b/xmloff/source/style/xmlexppr.cxx
index 5b2f073453fa..63994492afbc 100644
--- a/xmloff/source/style/xmlexppr.cxx
+++ b/xmloff/source/style/xmlexppr.cxx
@@ -973,7 +973,7 @@ void SvXMLExportPropertyMapper::_exportXML(
else if ((mpImpl->mxPropMapper->GetEntryFlags(rProperty.mnIndex) & MID_FLAG_ELEMENT_ITEM_EXPORT ) == 0)
{
OUString aValue;
- const OUString sName = rNamespaceMap.GetQNameByKey(
+ OUString sName = rNamespaceMap.GetQNameByKey(
mpImpl->mxPropMapper->GetEntryNameSpace(rProperty.mnIndex),
mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex));
@@ -988,6 +988,19 @@ void SvXMLExportPropertyMapper::_exportXML(
{
if( bRemove )
rAttrList.RemoveAttribute( sName );
+
+ if (IsXMLToken(mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex), XML_WRITING_MODE))
+ {
+ // We don't seem to have a generic mechanism to write an attribute in the extension
+ // namespace in case of certain attribute values only, so do this manually.
+ if (IsXMLToken(aValue, XML_BT_LR))
+ {
+ sName = rNamespaceMap.GetQNameByKey(
+ XML_NAMESPACE_LO_EXT,
+ mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex));
+ }
+ }
+
rAttrList.AddAttribute( sName, aValue );
}
}
diff --git a/xmloff/source/text/txtprmap.cxx b/xmloff/source/text/txtprmap.cxx
index 7817bbfc2101..2cd5005dfc64 100644
--- a/xmloff/source/text/txtprmap.cxx
+++ b/xmloff/source/text/txtprmap.cxx
@@ -850,6 +850,7 @@ XMLPropertyMapEntry const aXMLFramePropMap[] =
// RES_GRFATR_DRAWMODE
MG_E( "GraphicColorMode", DRAW, COLOR_MODE, XML_TYPE_COLOR_MODE, 0 ),
MG_E( "WritingMode", STYLE, WRITING_MODE, XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT, 0 ),
+ MAP_EXT_I("WritingMode", XML_NAMESPACE_LO_EXT, XML_WRITING_MODE, XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT|XML_TYPE_PROP_GRAPHIC, 0),
// RES_FOLLOW_TEXT_FLOW - DVO #i18732#
MG_E( "IsFollowingTextFlow", DRAW, FLOW_WITH_TEXT, XML_TYPE_BOOL|MID_FLAG_SPECIAL_ITEM_EXPORT, CTF_OLD_FLOW_WITH_TEXT ),
MG_E( "IsFollowingTextFlow", STYLE, FLOW_WITH_TEXT, XML_TYPE_BOOL, 0 ),
More information about the Libreoffice-commits
mailing list