[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - sw/qa sw/source

Miklos Vajna vmiklos at collabora.co.uk
Tue Apr 22 09:21:09 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 f0a169c8c7173d469ff628b3bd32ff0020a269e2
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.
    
    (cherry picked from commit 55c832d86e6cb06e9d6423ce5e6245189bc80da1)
    
    Conflicts:
    	sw/source/filter/ww8/rtfattributeoutput.cxx
    	sw/source/filter/ww8/rtfattributeoutput.hxx
    
    Change-Id: Ifd72741de610ce69b9ae0978aa8f9a532a3aeed2
    Reviewed-on: https://gerrit.libreoffice.org/9124
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

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 225ab3a..d58e200 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 3415be7..3cf3b69 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 60de3e4..b5b19a9 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;
 


More information about the Libreoffice-commits mailing list