diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-05-16 08:34:40 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-05-25 21:45:18 +0200 |
commit | 0022ae02cfea1c5d69d9f4fedeeeb7a30cc4184b (patch) | |
tree | 4cc424d279ca601af0f1cfecb981bb71b0d8dc4b | |
parent | 4b6bc4e012bde5737f279377c8186faf38a888ad (diff) |
tdf#106953 RTF import: fix missing paragraph left margin
See commit 3915bf2dc877d5f1140798e24933db0f21386a4a (tdf#95376 DOCX
import: fix incorrectly indented tab stops, 2016-01-26) for the various
sources that can determine the paragraph indentation.
In this case the problem was that too aggressive RTF style deduplication
removed a direct indent, which then meant a fallback to the ind-from-num
value, not to the ind-from-parastyle one.
(cherry picked from commit f528f9499bd91b700c549575e88fa102cfffede9)
Change-Id: I3b47b2bbeaaedf405baef24505d23dc49bd01865
Reviewed-on: https://gerrit.libreoffice.org/37670
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sw/qa/extras/rtfimport/data/tdf106953.rtf | 23 | ||||
-rw-r--r-- | sw/qa/extras/rtfimport/rtfimport.cxx | 9 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfsprm.cxx | 5 |
3 files changed, 37 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfimport/data/tdf106953.rtf b/sw/qa/extras/rtfimport/data/tdf106953.rtf new file mode 100644 index 000000000000..398f9df78dcf --- /dev/null +++ b/sw/qa/extras/rtfimport/data/tdf106953.rtf @@ -0,0 +1,23 @@ +{\rtf \ansi \ansicpg0 \deff0 \stshfdbch1 \stshfloch0 \stshfhich0 \deflang1033 \deflangfe1033 +{\stylesheet +{\s19 \li720 +style; +} +} +{\*\listtable +{\list +{\listlevel \levelnfc0 \levelnfcn0 \leveljc0 \leveljcn0 \levelstartat1 \levelfollow0 \levelspace0 \levelindent0 \levellegal0 \levelnorestart0 +{\leveltext\'02\'00.; +} +{\levelnumbers \'01 +{\uc1 \u59 ?} +} +\li720 \fi-360 } +\listid697112958 } +} +{\*\listoverridetable +{\listoverride \listid697112958 \listoverridecount0 \ls1 } +} +\pard \plain \s19 \fi-360 \li720 \ls1 +{hello\par } +} diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index ca696d9c84f8..9d863e7c76a9 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -1330,6 +1330,15 @@ DECLARE_RTFIMPORT_TEST(testN825305, "n825305.rtf") CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, ePropertyState); } +DECLARE_RTFIMPORT_TEST(testTdf106953, "tdf106953.rtf") +{ + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin")); + uno::Reference<beans::XPropertyState> xPropertyState(getParagraph(1), uno::UNO_QUERY); + beans::PropertyState ePropertyState = xPropertyState->getPropertyState("ParaLeftMargin"); + // Was beans::PropertyState_DEFAULT_VALUE. + CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, ePropertyState); +} + DECLARE_RTFIMPORT_TEST(testParaBottomMargin, "para-bottom-margin.rtf") { uno::Reference<beans::XPropertySet> xPropertySet(getStyles("ParagraphStyles")->getByName("Standard"), uno::UNO_QUERY); diff --git a/writerfilter/source/rtftok/rtfsprm.cxx b/writerfilter/source/rtftok/rtfsprm.cxx index 3f4f6659d2e8..b8f32ea48b69 100644 --- a/writerfilter/source/rtftok/rtfsprm.cxx +++ b/writerfilter/source/rtftok/rtfsprm.cxx @@ -163,6 +163,11 @@ static bool isSPRMDeduplicateBlacklist(Id nId) case NS_ooxml::LN_CT_TabStop_pos: // See the NS_ooxml::LN_CT_PPrBase_tabs handler in DomainMapper, // deduplication is explicitly not wanted for these tokens. + // Erasing these just because they equal to the style one is + // problematic, as then the used value won't be from the style, but + // possibly from the numbering. + case NS_ooxml::LN_CT_Ind_left: + case NS_ooxml::LN_CT_Ind_right: return true; default: |