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

fdo#77600 RTF export: always close URL's before the end of run

In case the URL text has multiple portions, then MSWordExportBase
generates multiple URL's anyway, and this helps to avoid loosing some
direct formatting of the remaining portions of the paragraph.

Change-Id: Ifd72741de610ce69b9ae0978aa8f9a532a3aeed2
üst 5c6b74f2
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0
{\fonttbl
{\f0\fbidi \froman\fcharset238\fprq2
Times New Roman;}
{\f1\fbidi \fswiss\fcharset238\fprq2
Arial;}
}
\pard\plain \ltrpar
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6446855 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
{\rtlch\fcs1 \af1 \ltrch\fcs0
\f1\fs20\insrsid6446855 Before }
{\field\fldedit
{\*\fldinst
{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1260577 HYPERLINK "http://www.microsoft.com/en-us/news/press/2013/jul13/07-11onemicrosoft.aspx" }
}
{\fldrslt
{\rtlch\fcs1 \af1 \ltrch\fcs0
\cs61\f1\fs20\ul\cf17\insrsid6446855\charrsid4592903 href}
}
}
\sectd \ltrsect\psz1\linex0\endnhere\sectdefaultcl\sectrsid6897289\sftnbj
{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\fs20\insrsid6446855 after.}
{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6446855
\par }
}
......@@ -619,6 +619,12 @@ DECLARE_RTFEXPORT_TEST(testLineNumbering, "linenumbering.rtf")
CPPUNIT_ASSERT_EQUAL(sal_Int32(5), getProperty<sal_Int32>(xPropertySet, "Interval"));
}
DECLARE_RTFEXPORT_TEST(testFdo77600, "fdo77600.rtf")
{
// This was 'Liberation Serif'.
CPPUNIT_ASSERT_EQUAL(OUString("Arial"), getProperty<OUString>(getRun(getParagraph(1), 3), "CharFontName"));
}
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
......
......@@ -413,6 +413,8 @@ void RtfAttributeOutput::StartRun( const SwRedlineData* pRedlineData, bool bSing
void RtfAttributeOutput::EndRun()
{
SAL_INFO("sw.rtf", OSL_THIS_FUNC);
if (m_bInURL)
EndURL();
m_aRun->append(SAL_NEWLINE_STRING);
m_aRun.appendAndClear(m_aRunText);
if (!m_bSingleEmptyRun && m_bInRun)
......@@ -493,6 +495,7 @@ bool RtfAttributeOutput::StartURL( const OUString& rUrl, const OUString& rTarget
m_aStyles.append("}");
m_bHadFieldResult = false;
m_bInURL = true;
return true;
}
......@@ -500,6 +503,11 @@ bool RtfAttributeOutput::EndURL()
{
SAL_INFO("sw.rtf", OSL_THIS_FUNC);
if (m_bInURL)
m_bInURL = false;
else
return true;
// close the fldrslt group
if (m_bHadFieldResult)
m_aRunText->append('}');
......@@ -3361,6 +3369,7 @@ RtfAttributeOutput::RtfAttributeOutput( RtfExport &rExport )
m_aCells(),
m_bSingleEmptyRun(false),
m_bInRun(false),
m_bInURL(false),
m_pFlyFrameSize(0),
m_pPrevPageDesc(0)
{
......
......@@ -586,6 +586,8 @@ private:
bool m_bInRun;
bool m_bInURL;
/// Maps ID's to postit fields, used in atrfstart/end and atnref.
std::map<sal_uInt16, const SwPostItField*> m_aPostitFields;
......
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