diff --git a/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng b/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng index e8e2c5be98e1..79bb67d7da17 100644 --- a/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng +++ b/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng @@ -3125,14 +3125,6 @@ xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1. - - - - - - - - diff --git a/sw/qa/extras/layout/data/fomargin.fodt b/sw/qa/extras/layout/data/fomargin.fodt new file mode 100644 index 000000000000..1c051a6f487f --- /dev/null +++ b/sw/qa/extras/layout/data/fomargin.fodt @@ -0,0 +1,114 @@ + + + 2024-12-11T07:03:00.500708679LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/5a9171d8f0e90485b76a33f057ddc8edc329571e2024-12-11T07:06:14.721290230PT3M15S2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A + + + \ No newline at end of file diff --git a/sw/qa/extras/layout/layout5.cxx b/sw/qa/extras/layout/layout5.cxx index 35dc2fe89638..1ad056f4b2a7 100644 --- a/sw/qa/extras/layout/layout5.cxx +++ b/sw/qa/extras/layout/layout5.cxx @@ -1371,6 +1371,32 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf153136) // CPPUNIT_ASSERT_GREATER(large, height); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testFoMargin) +{ + createSwDoc("fomargin.fodt"); + auto pXmlDoc = parseLayoutDump(); + + auto nPage1Width + = getXPath(pXmlDoc, "/root/page[1]/body/txt[1]/infos/bounds", "width").toInt32(); + CPPUNIT_ASSERT_GREATER(sal_Int32(9600), nPage1Width); + CPPUNIT_ASSERT_LESS(sal_Int32(9700), nPage1Width); + + auto nPage1Height + = getXPath(pXmlDoc, "/root/page[1]/body/txt[1]/infos/bounds", "height").toInt32(); + CPPUNIT_ASSERT_GREATER(sal_Int32(13800), nPage1Height); + CPPUNIT_ASSERT_LESS(sal_Int32(14000), nPage1Height); + + auto nPage2Width + = getXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "width").toInt32(); + CPPUNIT_ASSERT_GREATER(sal_Int32(9600), nPage2Width); + CPPUNIT_ASSERT_LESS(sal_Int32(9700), nPage2Width); + + auto nPage2Height + = getXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "height").toInt32(); + CPPUNIT_ASSERT_GREATER(sal_Int32(13100), nPage2Height); + CPPUNIT_ASSERT_LESS(sal_Int32(13400), nPage2Height); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/odfexport/data/tdf163913.fodt b/sw/qa/extras/odfexport/data/tdf163913.fodt index a0e88fe0379d..a84af1dcb1a2 100644 --- a/sw/qa/extras/odfexport/data/tdf163913.fodt +++ b/sw/qa/extras/odfexport/data/tdf163913.fodt @@ -86,7 +86,7 @@ - + @@ -128,4 +128,4 @@ 6em loext:margin-right - \ No newline at end of file + diff --git a/xmloff/source/text/txtprmap.cxx b/xmloff/source/text/txtprmap.cxx index cd362b98ede6..0d4435025f46 100644 --- a/xmloff/source/text/txtprmap.cxx +++ b/xmloff/source/text/txtprmap.cxx @@ -117,21 +117,13 @@ XMLPropertyMapEntry constexpr aXMLParaPropMap[] = // RES_LR_SPACE // !!! DO NOT REORDER THE MARGINS !!! + // - The all margin implementation enumerates the margin properties by relative index. MP_E( PROP_ParaLeftMargin, XML_NAMESPACE_FO, XML_MARGIN, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARAMARGINALL ), MP_E( PROP_ParaLeftMarginRelative, XML_NAMESPACE_FO, XML_MARGIN, XML_TYPE_PERCENT16, CTF_PARAMARGINALL_REL ), - MAP_EXT( PROP_ParaLeftMarginUnit, XML_NAMESPACE_LO_EXT, XML_MARGIN, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_UNIT_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), - MAP_EXT_I( PROP_ParaLeftMargin, XML_NAMESPACE_LO_EXT, XML_MARGIN, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARAMARGINALL ), - MAP_EXT_I( PROP_ParaLeftMarginRelative, XML_NAMESPACE_LO_EXT, XML_MARGIN, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_PERCENT16, CTF_PARAMARGINALL_REL ), MP_E( PROP_ParaLeftMargin, XML_NAMESPACE_FO, XML_MARGIN_LEFT, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARALEFTMARGIN ), MP_E( PROP_ParaLeftMarginRelative, XML_NAMESPACE_FO, XML_MARGIN_LEFT, XML_TYPE_PERCENT16, CTF_PARALEFTMARGIN_REL ), - MAP_EXT( PROP_ParaLeftMarginUnit, XML_NAMESPACE_LO_EXT, XML_MARGIN_LEFT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_UNIT_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), - MAP_EXT_I( PROP_ParaLeftMargin, XML_NAMESPACE_FO, XML_MARGIN_LEFT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARALEFTMARGIN ), - MAP_EXT_I( PROP_ParaLeftMarginRelative, XML_NAMESPACE_FO, XML_MARGIN_LEFT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_PERCENT16, CTF_PARALEFTMARGIN_REL ), MP_E( PROP_ParaRightMargin, XML_NAMESPACE_FO, XML_MARGIN_RIGHT, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARARIGHTMARGIN ), MP_E( PROP_ParaRightMarginRelative, XML_NAMESPACE_FO, XML_MARGIN_RIGHT, XML_TYPE_PERCENT16, CTF_PARARIGHTMARGIN_REL ), - MAP_EXT( PROP_ParaRightMarginUnit, XML_NAMESPACE_LO_EXT, XML_MARGIN_RIGHT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_UNIT_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), - MAP_EXT_I( PROP_ParaRightMargin, XML_NAMESPACE_FO, XML_MARGIN_RIGHT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARARIGHTMARGIN ), - MAP_EXT_I( PROP_ParaRightMarginRelative, XML_NAMESPACE_FO, XML_MARGIN_RIGHT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_PERCENT16, CTF_PARARIGHTMARGIN_REL ), // RES_UL_SPACE MP_E( PROP_ParaTopMargin, XML_NAMESPACE_FO, XML_MARGIN_TOP, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARATOPMARGIN ), MP_E( PROP_ParaTopMarginRelative, XML_NAMESPACE_FO, XML_MARGIN_TOP, XML_TYPE_PERCENT16, CTF_PARATOPMARGIN_REL ), @@ -375,9 +367,6 @@ XMLPropertyMapEntry constexpr aXMLParaPropMap[] = MP_E( PROP_ParaFirstLineIndent, XML_NAMESPACE_FO, XML_TEXT_INDENT, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARAFIRSTLINE ), MP_E( PROP_ParaFirstLineIndentRelative, XML_NAMESPACE_FO, XML_TEXT_INDENT, XML_TYPE_PERCENT, CTF_PARAFIRSTLINE_REL ), - MAP_EXT( PROP_ParaFirstLineIndentUnit, XML_NAMESPACE_LO_EXT, XML_TEXT_INDENT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_UNIT_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), - MAP_EXT_I( PROP_ParaFirstLineIndent, XML_NAMESPACE_LO_EXT, XML_TEXT_INDENT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARAFIRSTLINE ), - MAP_EXT_I( PROP_ParaFirstLineIndentRelative, XML_NAMESPACE_LO_EXT, XML_TEXT_INDENT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_PERCENT, CTF_PARAFIRSTLINE_REL ), MP_E( PROP_ParaIsAutoFirstLineIndent, XML_NAMESPACE_STYLE, XML_AUTO_TEXT_INDENT, XML_TYPE_BOOL, 0 ), // RES_PAGEDESC MP_E( PROP_PageDescName, XML_NAMESPACE_STYLE, XML_MASTER_PAGE_NAME, MID_FLAG_SPECIAL_ITEM|XML_TYPE_STYLENAME, CTF_PAGEDESCNAME ), @@ -479,6 +468,16 @@ XMLPropertyMapEntry constexpr aXMLParaPropMap[] = MAP_EXT( PROP_ListAutoFormat, XML_NAMESPACE_LO_EXT, XML_MARKER_STYLE_NAME, XML_TYPE_STYLENAME|XML_TYPE_PROP_PARAGRAPH, 0 ), + MAP_EXT( PROP_ParaLeftMarginUnit, XML_NAMESPACE_LO_EXT, XML_MARGIN_LEFT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_UNIT_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), + MAP_EXT_I( PROP_ParaLeftMargin, XML_NAMESPACE_LO_EXT, XML_MARGIN_LEFT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARALEFTMARGIN ), + MAP_EXT_I( PROP_ParaLeftMarginRelative, XML_NAMESPACE_LO_EXT, XML_MARGIN_LEFT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_PERCENT16, CTF_PARALEFTMARGIN_REL ), + MAP_EXT( PROP_ParaRightMarginUnit, XML_NAMESPACE_LO_EXT, XML_MARGIN_RIGHT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_UNIT_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), + MAP_EXT_I( PROP_ParaRightMargin, XML_NAMESPACE_LO_EXT, XML_MARGIN_RIGHT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARARIGHTMARGIN ), + MAP_EXT_I( PROP_ParaRightMarginRelative, XML_NAMESPACE_LO_EXT, XML_MARGIN_RIGHT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_PERCENT16, CTF_PARARIGHTMARGIN_REL ), + MAP_EXT( PROP_ParaFirstLineIndentUnit, XML_NAMESPACE_LO_EXT, XML_TEXT_INDENT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_UNIT_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), + MAP_EXT_I( PROP_ParaFirstLineIndent, XML_NAMESPACE_LO_EXT, XML_TEXT_INDENT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARAFIRSTLINE ), + MAP_EXT_I( PROP_ParaFirstLineIndentRelative, XML_NAMESPACE_LO_EXT, XML_TEXT_INDENT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_PERCENT, CTF_PARAFIRSTLINE_REL ), + M_END() };