summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/qa/extras/rtfexport/data/fdo77600.rtf25
-rw-r--r--sw/qa/extras/rtfexport/rtfexport.cxx6
-rw-r--r--sw/source/filter/ww8/rtfattributeoutput.cxx9
-rw-r--r--sw/source/filter/ww8/rtfattributeoutput.hxx2
4 files changed, 42 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfexport/data/fdo77600.rtf b/sw/qa/extras/rtfexport/data/fdo77600.rtf
new file mode 100644
index 000000000000..5c6a488eb92f
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/fdo77600.rtf
@@ -0,0 +1,25 @@
+{\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 }
+}
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 225ab3a5b805..d58e20088b46 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -586,6 +586,12 @@ DECLARE_RTFEXPORT_TEST(testFdo74709, "fdo74709.rtf")
CPPUNIT_ASSERT_EQUAL(sal_Int32(TWIP_TO_MM100(360)), getProperty<sal_Int32>(xCell, "RightBorderDistance"));
}
+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();
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 3415be73901c..3cf3b6982e20 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -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('}');
@@ -3242,6 +3250,7 @@ RtfAttributeOutput::RtfAttributeOutput( RtfExport &rExport )
m_bSingleEmptyRun(false),
m_bInRun(false),
m_nPostitFieldsMaxId(0),
+ m_bInURL(false),
m_pFlyFrameSize(0),
m_pPrevPageDesc(0)
{
diff --git a/sw/source/filter/ww8/rtfattributeoutput.hxx b/sw/source/filter/ww8/rtfattributeoutput.hxx
index 60de3e4febaf..b5b19a982463 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.hxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.hxx
@@ -575,6 +575,8 @@ private:
unsigned int m_nPostitFieldsMaxId;
+ bool m_bInURL;
+
/// When exporting fly frames, this holds the real size of the frame.
const Size* m_pFlyFrameSize;