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

Lei De Bin leidb at apache.org
Sun Mar 10 11:59:30 PDT 2013


 sw/source/filter/inc/msfilter.hxx       |    6 +++++
 sw/source/filter/ww8/writerwordglue.cxx |   36 ++++++++++++++++++++++++++++++--
 2 files changed, 40 insertions(+), 2 deletions(-)

New commits:
commit a2e964afc5187fc1e3b38720ec10ad9856b87020
Author: Lei De Bin <leidb at apache.org>
Date:   Thu Aug 16 01:30:17 2012 +0000

    Resolves: #i120158# fix Time format is different than MS Office issue
    
    Reported by: Yan Ji
    Patch by: Chen Zuo Jun
    Review by: Lei De Bin (cherry picked from commit a535dd7eaa71a599b92c04eb9c6bab7678c30eb2)
    
    Conflicts:
    	sw/source/filter/inc/msfilter.hxx
    	sw/source/filter/ww8/writerwordglue.cxx
    
    Change-Id: Ie93d3755dfd230cea1914a67974e717c825c07a7

diff --git a/sw/source/filter/inc/msfilter.hxx b/sw/source/filter/inc/msfilter.hxx
index 1f807c02..00a0172 100644
--- a/sw/source/filter/inc/msfilter.hxx
+++ b/sw/source/filter/inc/msfilter.hxx
@@ -105,6 +105,12 @@ namespace sw
         */
         sal_uLong MSDateTimeFormatToSwFormat(String& rParams, SvNumberFormatter *pFormatter, sal_uInt16 &rLang, bool bHijri, sal_uInt16 nDocLang);
 
+        /*Used to identify if the previous token is AM time field*/
+        sal_Bool IsPreviousAM(String& rParams, xub_StrLen nPos);
+
+        /*Used to identify if the next token is PM time field*/
+        sal_Bool IsNextPM(String& rParams, xub_StrLen nPos);
+
         /** Used by MSDateTimeFormatToSwFormat to identify AM time fields
 
             @author
diff --git a/sw/source/filter/ww8/writerwordglue.cxx b/sw/source/filter/ww8/writerwordglue.cxx
index c0149d5..b4afcff 100644
--- a/sw/source/filter/ww8/writerwordglue.cxx
+++ b/sw/source/filter/ww8/writerwordglue.cxx
@@ -807,8 +807,12 @@ namespace sw
                     }
                     if (nChar == '/')
                     {
-                        // MM We have to escape '/' in case it's used as a char
-                        rParams.Replace(nI, 1, rtl::OUString("\\/"));
+                        // MM: We have to escape '/' in case it's used as a char.
+                        // But not if it's a '/' inside AM/PM
+                        if (!(IsPreviousAM(rParams, nI) && IsNextPM(rParams, nI)))
+                        {
+                            rParams.Replace(nI, 1, rtl::OUString("\\/"));
+                        }
                         nI++;
                         nLen++;
                     }
@@ -950,6 +954,34 @@ namespace sw
             return nKey;
         }
 
+        sal_Bool IsPreviousAM(String& rParams, xub_StrLen nPos){
+            xub_StrLen nPos1 = nPos - 1;
+            xub_StrLen nPos2 = nPos - 2;
+
+            if(nPos1 > nPos || nPos2 > nPos){
+                return sal_False;
+            }else{
+                return (
+                    (rParams.GetChar(nPos1) == 'M'||rParams.GetChar(nPos1) == 'm')&&
+                    (rParams.GetChar(nPos2) == 'A'||rParams.GetChar(nPos2) == 'a')
+                    );
+            }
+        }
+        sal_Bool IsNextPM(String& rParams, xub_StrLen nPos){
+            xub_StrLen nPos1 = nPos + 1;
+            xub_StrLen nPos2 = nPos + 2;
+
+
+            if(nPos1 >= rParams.Len() - 1 || nPos2 > rParams.Len() - 1){
+                return sal_False;
+            }else{
+                return (
+                    (rParams.GetChar(nPos1) == 'P'||rParams.GetChar(nPos1) == 'p')&&
+                    (rParams.GetChar(nPos2) == 'M'||rParams.GetChar(nPos2) == 'm')
+                    );
+            }
+
+        }
         bool IsNotAM(String& rParams, xub_StrLen nPos)
         {
             return (


More information about the Libreoffice-commits mailing list