Kaydet (Commit) 497b4ff5 authored tarafından Miklos Vajna's avatar Miklos Vajna Kaydeden (comit) Caolán McNamara

tdf#89702 DOCX import: fix too large bullet character

Commit c1f8437d (fdo#83465 RTF import:
handle font of numbering, 2014-09-25), changed the "get the me character
style of the current numbering's current level" member function to be
successfull even in case we're inside a DOCX run, not when we're inside
a DOCX paragraph, but outside runs.

While this is necessary for RTF, the side effect of this was that
unwanted run properties started to affect the above mentioned character
style in case of DOCX.

Fix the problem by enabling the "in paragraph and run" looking for RTF
only.

Change-Id: I610bfce6cec15b918fe547402360f5a894401f7e
(cherry picked from commit fc7c1a07)
Reviewed-on: https://gerrit.libreoffice.org/17323Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst b882eef3
......@@ -2735,6 +2735,20 @@ DECLARE_OOXMLIMPORT_TEST(testTdf90611, "tdf90611.docx")
CPPUNIT_ASSERT_EQUAL(10.f, getProperty<float>(getParagraphOfText(1, xFootnoteText), "CharHeight"));
}
DECLARE_OOXMLIMPORT_TEST(testTdf89702, "tdf89702.docx")
{
// Get the first paragraph's numbering style's 2nd level's character style name.
uno::Reference<text::XTextRange> xParagraph = getParagraph(1);
auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
uno::Sequence<beans::PropertyValue> aLevel;
xLevels->getByIndex(1) >>= aLevel; // 2nd level
OUString aCharStyleName = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "CharStyleName"; })->Value.get<OUString>();
// Make sure that the font name is Arial, this was Verdana.
uno::Reference<beans::XPropertySet> xStyle(getStyles("CharacterStyles")->getByName(aCharStyleName), uno::UNO_QUERY);
CPPUNIT_ASSERT_EQUAL(OUString("Arial"), getProperty<OUString>(xStyle, "CharFontName"));
}
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
......
......@@ -5042,12 +5042,16 @@ uno::Reference<beans::XPropertySet> DomainMapper_Impl::GetCurrentNumberingCharSt
uno::Reference<container::XIndexAccess> xLevels = GetCurrentNumberingRules(&nListLevel);
if (!xLevels.is())
{
// Looking up the paragraph context explicitly (and not just taking
// the top context) is necessary for RTF, where formatting of a run
// and of the paragraph mark is not separated.
PropertyMapPtr pContext = GetTopContextOfType(CONTEXT_PARAGRAPH);
if (!pContext)
return xRet;
PropertyMapPtr pContext = m_pTopContext;
if (IsRTFImport())
{
// Looking up the paragraph context explicitly (and not just taking
// the top context) is necessary for RTF, where formatting of a run
// and of the paragraph mark is not separated.
pContext = GetTopContextOfType(CONTEXT_PARAGRAPH);
if (!pContext)
return xRet;
}
// In case numbering rules is not found via a style, try the direct formatting instead.
boost::optional<PropertyMap::Property> oProp = pContext->getProperty(PROP_NUMBERING_RULES);
......
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