Kaydet (Commit) f528f949 authored tarafından Miklos Vajna's avatar Miklos Vajna

tdf#106953 RTF import: fix missing paragraph left margin

See commit 3915bf2d (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.

Change-Id: I3b47b2bbeaaedf405baef24505d23dc49bd01865
Reviewed-on: https://gerrit.libreoffice.org/37660Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
üst 6170d7c6
{\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 }
}
......@@ -1333,6 +1333,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);
......
......@@ -628,7 +628,7 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
if (m_aStates.top().eDestination == Destination::LISTOVERRIDEENTRY)
m_aStates.top().aTableAttributes.set(NS_ooxml::LN_CT_AbstractNum_nsid, pIntValue);
else
putNestedSprm(m_aStates.top().aParagraphSprms, NS_ooxml::LN_CT_PPrBase_tabs, NS_ooxml::LN_CT_NumPr_numId, pIntValue);
putNestedSprm(m_aStates.top().aParagraphSprms, NS_ooxml::LN_CT_PPrBase_numPr, NS_ooxml::LN_CT_NumPr_numId, pIntValue);
}
break;
case RTF_UC:
......
......@@ -158,11 +158,16 @@ static bool isSPRMDeduplicateBlacklist(Id nId)
{
switch (nId)
{
// See the NS_ooxml::LN_CT_PPrBase_tabs handler in DomainMapper,
// deduplication is explicitly not wanted for these tokens.
case NS_ooxml::LN_CT_TabStop_val:
case NS_ooxml::LN_CT_TabStop_leader:
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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment