[Libreoffice-commits] core.git: sw/qa sw/source
László Németh (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jul 12 11:49:29 UTC 2019
sw/qa/extras/uiwriter/uiwriter2.cxx | 13 +++++++++++
sw/source/core/doc/DocumentRedlineManager.cxx | 4 +++
sw/source/core/unocore/unocrsrhelper.cxx | 30 ++++++++++++++++++++++----
3 files changed, 43 insertions(+), 4 deletions(-)
New commits:
commit 6eccbbd22a46ea26bf90de94a97d55339a53cc0d
Author: László Németh <nemeth at numbertext.org>
AuthorDate: Wed Jul 10 19:45:54 2019 +0200
Commit: László Németh <nemeth at numbertext.org>
CommitDate: Fri Jul 12 13:48:10 2019 +0200
tdf#126245 DOCX: reject tracked paragraph numbering changes
during editing.
Fix also import of change tracking data with unknown or
read-only properties (use correct name-value pairs).
Change-Id: I7c31393673ade5458d437268aab9200e8b2fdbdb
Reviewed-on: https://gerrit.libreoffice.org/75354
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth at numbertext.org>
diff --git a/sw/qa/extras/uiwriter/uiwriter2.cxx b/sw/qa/extras/uiwriter/uiwriter2.cxx
index 5818597caae4..f5b98fc4cb84 100644
--- a/sw/qa/extras/uiwriter/uiwriter2.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter2.cxx
@@ -1695,6 +1695,12 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf120338)
CPPUNIT_ASSERT_EQUAL(sal_Int32(1),
getProperty<sal_Int32>(getParagraph(5), "ParaAdjust")); // right
+ CPPUNIT_ASSERT_EQUAL(OUString(""),
+ getProperty<OUString>(getParagraph(7), "NumberingStyleName"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("WWNum2"),
+ getProperty<OUString>(getParagraph(8), "NumberingStyleName"));
+
CPPUNIT_ASSERT_EQUAL(OUString("Heading 2"),
getProperty<OUString>(getParagraph(10), "ParaStyleName"));
CPPUNIT_ASSERT_EQUAL(OUString("Heading 2"),
@@ -1712,6 +1718,13 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf120338)
CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
getProperty<sal_Int32>(getParagraph(5), "ParaAdjust")); // left
+ // tdf#126245 revert numbering changes
+ CPPUNIT_ASSERT_EQUAL(OUString("WWNum2"),
+ getProperty<OUString>(getParagraph(7), "NumberingStyleName"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString(""),
+ getProperty<OUString>(getParagraph(8), "NumberingStyleName"));
+
// tdf#126243 revert paragraph styles
CPPUNIT_ASSERT_EQUAL(OUString("Standard"),
getProperty<OUString>(getParagraph(10), "ParaStyleName"));
diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx
index 63283b91ed5b..0c63b61e8226 100644
--- a/sw/source/core/doc/DocumentRedlineManager.cxx
+++ b/sw/source/core/doc/DocumentRedlineManager.cxx
@@ -688,6 +688,10 @@ namespace
}
rDoc.ResetAttrs(aPam, false, aResetAttrsArray);
+
+ // remove numbering
+ if ( pTNd->GetNumRule() )
+ rDoc.DelNumRules(aPam);
}
}
diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx
index db66adb2fd0a..6fbe3f75f3c7 100644
--- a/sw/source/core/unocore/unocrsrhelper.cxx
+++ b/sw/source/core/unocore/unocrsrhelper.cxx
@@ -91,6 +91,7 @@
#include <txtfld.hxx>
#include <unoparagraph.hxx>
#include <poolfmt.hxx>
+#include <paratr.hxx>
#include <sal/log.hxx>
using namespace ::com::sun::star;
@@ -1230,7 +1231,10 @@ void makeRedline( SwPaM const & rPaM,
// Build set of attributes we want to fetch
std::vector<sal_uInt16> aWhichPairs;
std::vector<SfxItemPropertySimpleEntry const*> aEntries;
+ std::vector<uno::Any> aValues;
aEntries.reserve(aRevertProperties.getLength());
+ sal_uInt16 nStyleId = USHRT_MAX;
+ sal_uInt16 nNumId = USHRT_MAX;
for (const auto& rRevertProperty : aRevertProperties)
{
const OUString &rPropertyName = rRevertProperty.Name;
@@ -1245,13 +1249,22 @@ void makeRedline( SwPaM const & rPaM,
{
break;
}
+ else if (rPropertyName == "NumberingRules")
+ {
+ aWhichPairs.push_back(RES_PARATR_NUMRULE);
+ aWhichPairs.push_back(RES_PARATR_NUMRULE);
+ nNumId = aEntries.size();
+ }
else
{
// FIXME: we should have some nice way of merging ranges surely ?
aWhichPairs.push_back(pEntry->nWID);
aWhichPairs.push_back(pEntry->nWID);
+ if (rPropertyName == "ParaStyleName")
+ nStyleId = aEntries.size();
}
aEntries.push_back(pEntry);
+ aValues.push_back(rRevertProperty.Value);
}
if (!aWhichPairs.empty())
@@ -1264,11 +1277,20 @@ void makeRedline( SwPaM const & rPaM,
for (size_t i = 0; i < aEntries.size(); ++i)
{
SfxItemPropertySimpleEntry const*const pEntry = aEntries[i];
- const uno::Any &rValue = aRevertProperties[i].Value;
- rPropSet.setPropertyValue(*pEntry, rValue, aItemSet);
-
- if ( aRevertProperties[i].Name == "ParaStyleName" )
+ const uno::Any &rValue = aValues[i];
+ if (i == nNumId)
+ {
+ uno::Reference<container::XNamed> xNumberingRules;
+ rValue >>= xNumberingRules;
+ if (xNumberingRules.is())
+ aItemSet.Put( SwNumRuleItem( xNumberingRules->getName() ));
+ }
+ else
+ {
+ rPropSet.setPropertyValue(*pEntry, rValue, aItemSet);
+ if (i == nStyleId)
rValue >>= sParaStyleName;
+ }
}
if (eType == RedlineType::ParagraphFormat && sParaStyleName.isEmpty())
More information about the Libreoffice-commits
mailing list