summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorVasily Melenchuk <vasily.melenchuk@cib.de>2021-07-21 12:21:07 +0300
committerThorsten Behrens <thorsten.behrens@allotropia.de>2021-07-26 15:18:16 +0200
commitd44730148a95933f4a45a70241cb6d1d0546f626 (patch)
tree3bddf56a5f3a578e6852005e95a5d054fec390b8 /sw
parentda9bba7cc3c243e936daea689fea64ecaf110f35 (diff)
tdf#143424: support for "Chapter number without separator"
If LO is using list format strings (this is default behavior since aa5c6d12) it was not able to show just numbering without all formatting, as it used in some fields. Change-Id: Ib4695b8e1c2d7a451522c7e04af2216d16aceefe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119309 Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de> Tested-by: Jenkins
Diffstat (limited to 'sw')
-rw-r--r--sw/qa/core/fields/data/tdf143424.odtbin0 -> 10600 bytes
-rw-r--r--sw/qa/core/fields/fields.cxx34
-rw-r--r--sw/source/core/doc/number.cxx3
-rw-r--r--sw/source/filter/ww8/wrtw8num.cxx2
4 files changed, 37 insertions, 2 deletions
diff --git a/sw/qa/core/fields/data/tdf143424.odt b/sw/qa/core/fields/data/tdf143424.odt
new file mode 100644
index 000000000000..d485267f12e4
--- /dev/null
+++ b/sw/qa/core/fields/data/tdf143424.odt
Binary files differ
diff --git a/sw/qa/core/fields/fields.cxx b/sw/qa/core/fields/fields.cxx
index 74b94d7a3f8e..7f59597831ea 100644
--- a/sw/qa/core/fields/fields.cxx
+++ b/sw/qa/core/fields/fields.cxx
@@ -10,6 +10,8 @@
#include <swmodeltestbase.hxx>
#include <com/sun/star/text/XTextDocument.hpp>
+#include <com/sun/star/text/XTextField.hpp>
+#include <com/sun/star/text/XTextFieldsSupplier.hpp>
#include <comphelper/propertyvalue.hxx>
@@ -26,6 +28,8 @@ class Test : public SwModelTestBase
{
};
+constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/fields/data/";
+
CPPUNIT_TEST_FIXTURE(Test, testAuthorityTooltip)
{
// Create a document with a bibliography reference in it.
@@ -62,6 +66,36 @@ CPPUNIT_TEST_FIXTURE(Test, testAuthorityTooltip)
// first inserting an empty bibliography table into the document.
CPPUNIT_ASSERT_EQUAL(OUString("ARJ00: Ar, J, mytitle, 2020"), aTooltip);
}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf143424)
+{
+ createSwDoc(DATA_DIRECTORY, "tdf143424.odt");
+
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(
+ xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+
+ // TODO: I have no idea why fields are enumerated in invalid order, not like in document
+
+ // Field: Chapter Format: Chapter name
+ uno::Reference<text::XTextField> xField(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Another title"), xField->getPresentation(false));
+
+ // Field: Chapter Format: Chapter number and name
+ xField.set(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Chapter 2 -Another title"), xField->getPresentation(false));
+ // ^^ seems here must be a separator
+ // Please modify this testcase once this behavior will be fixed. For now I just fix and check this behavior
+
+ // Field: Chapter Format: Chapter number
+ xField.set(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Chapter 2 -"), xField->getPresentation(false));
+
+ // Field: Chapter Format: Chapter number without separator
+ xField.set(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("2"), xField->getPresentation(false));
+}
}
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx
index 656b4aca04d5..b98b376348f4 100644
--- a/sw/source/core/doc/number.cxx
+++ b/sw/source/core/doc/number.cxx
@@ -666,7 +666,8 @@ OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVecto
if (rMyNFormat.HasListFormat())
{
- OUString sLevelFormat = rMyNFormat.GetListFormat();
+ OUString sLevelFormat = rMyNFormat.GetListFormat(bInclStrings);
+
// In this case we are ignoring GetIncludeUpperLevels: we put all
// level numbers requested by level format
for (SwNumberTree::tNumberVector::size_type i=0; i <= nLevel; ++i)
diff --git a/sw/source/filter/ww8/wrtw8num.cxx b/sw/source/filter/ww8/wrtw8num.cxx
index f1f7654cb124..a5a97854aa4f 100644
--- a/sw/source/filter/ww8/wrtw8num.cxx
+++ b/sw/source/filter/ww8/wrtw8num.cxx
@@ -487,7 +487,7 @@ void MSWordExportBase::NumberingLevel(
sal_uInt8* pLvlPos = aNumLvlPos;
// the numbering string has to be restrict
// to the level currently working on.
- sNumStr = rRule.MakeNumString(aNumVector, false, true, nLvl);
+ sNumStr = rRule.MakeNumString(aNumVector, true, true, nLvl);
// now search the nums in the string
for (sal_uInt8 i = 0; i <= nLvl; ++i)