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

fdo#47326 fix RTF import of mixed super/nonsuper text

In most cases \super has its own group, but it's valid to have mixed
super and non-super text in a single group, as long as \super and
\nosupersub keywords are used: handle this.
üst a7c11707
{\rtf1
Windows\super\'ae\nosupersub XP:
\pard
Cartes:\par
}
......@@ -68,6 +68,7 @@ public:
void testFdo45563();
void testFdo43965();
void testN751020();
void testFdo47326();
CPPUNIT_TEST_SUITE(RtfModelTest);
#if !defined(MACOSX) && !defined(WNT)
......@@ -82,6 +83,7 @@ public:
CPPUNIT_TEST(testFdo45563);
CPPUNIT_TEST(testFdo43965);
CPPUNIT_TEST(testN751020);
CPPUNIT_TEST(testFdo47326);
#endif
CPPUNIT_TEST_SUITE_END();
......@@ -389,6 +391,13 @@ void RtfModelTest::testN751020()
CPPUNIT_ASSERT_EQUAL(sal_Int32(TWIP_TO_MM100(200)), nValue);
}
void RtfModelTest::testFdo47326()
{
load(OUString(RTL_CONSTASCII_USTRINGPARAM("fdo47326.rtf")));
// This was 15 only, as \super buffered text, then the contents of it got lost.
CPPUNIT_ASSERT_EQUAL(19, getLength());
}
CPPUNIT_TEST_SUITE_REGISTRATION(RtfModelTest);
CPPUNIT_PLUGIN_IMPLEMENT();
......
......@@ -1932,6 +1932,14 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
m_aStates.top().aCharacterSprms->push_back(make_pair(NS_ooxml::LN_EG_RPrBase_vertAlign, pValue));
}
break;
case RTF_NOSUPERSUB:
if (m_pCurrentBuffer == &m_aSuperBuffer)
{
replayBuffer(m_aSuperBuffer);
m_pCurrentBuffer = 0;
}
m_aStates.top().aCharacterSprms.erase(NS_ooxml::LN_EG_RPrBase_vertAlign);
break;
case RTF_LINEPPAGE:
case RTF_LINECONT:
{
......
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