[Libreoffice-commits] core.git: sw/qa sw/source

Miklos Vajna vmiklos at collabora.co.uk
Tue Apr 22 06:09:19 PDT 2014


 sw/qa/extras/rtfexport/data/fdo77600.rtf    |   25 +++++++++++++++++++++++++
 sw/qa/extras/rtfexport/rtfexport.cxx        |    6 ++++++
 sw/source/filter/ww8/rtfattributeoutput.cxx |    9 +++++++++
 sw/source/filter/ww8/rtfattributeoutput.hxx |    2 ++
 4 files changed, 42 insertions(+)

New commits:
commit 55c832d86e6cb06e9d6423ce5e6245189bc80da1
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Apr 22 14:49:41 2014 +0200

    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

diff --git a/sw/qa/extras/rtfexport/data/fdo77600.rtf b/sw/qa/extras/rtfexport/data/fdo77600.rtf
new file mode 100644
index 0000000..5c6a488
--- /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 a0ffe5d..c395ec9 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -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();
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 0185a01..862b128 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('}');
@@ -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)
 {
diff --git a/sw/source/filter/ww8/rtfattributeoutput.hxx b/sw/source/filter/ww8/rtfattributeoutput.hxx
index 0d00506..fbb191a 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.hxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.hxx
@@ -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;
 


More information about the Libreoffice-commits mailing list