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

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Tue Apr 23 20:41:54 UTC 2019


 sw/source/uibase/inc/redlndlg.hxx  |   12 +++---
 sw/source/uibase/misc/redlndlg.cxx |   69 +++++++++++++++++++++----------------
 2 files changed, 47 insertions(+), 34 deletions(-)

New commits:
commit 74a58038b2001ddea5673300bd0317d29c100459
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Apr 23 16:56:31 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue Apr 23 22:41:01 2019 +0200

    multiple concatted AcceptChgDat
    
    Change-Id: I4ab78f35cb5a6ea31235662b6fad8d1e6c5d33b5
    Reviewed-on: https://gerrit.libreoffice.org/71140
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/uibase/inc/redlndlg.hxx b/sw/source/uibase/inc/redlndlg.hxx
index 4f551e76ddec..7892fcb48fc6 100644
--- a/sw/source/uibase/inc/redlndlg.hxx
+++ b/sw/source/uibase/inc/redlndlg.hxx
@@ -128,7 +128,7 @@ public:
     void            Init(SwRedlineTable::size_type nStart = 0);
     void            CallAcceptReject( bool bSelect, bool bAccept );
 
-    void            Initialize(const OUString &rExtraData);
+    void            Initialize(OUString &rExtraData);
     void            FillInfo(OUString &rExtraData) const;
 
     void            Activate();
@@ -146,16 +146,16 @@ public:
 
     virtual void    Activate() override;
     virtual void    FillInfo(SfxChildWinInfo&) const override;
-    void            Initialize (SfxChildWinInfo const * pInfo);
+    void            Initialize(SfxChildWinInfo * pInfo);
 };
 
 class SwRedlineAcceptChild : public SwChildWinWrapper
 {
 public:
-    SwRedlineAcceptChild(   vcl::Window* ,
-                            sal_uInt16 nId,
-                            SfxBindings*,
-                            SfxChildWinInfo const *  );
+    SwRedlineAcceptChild(vcl::Window* ,
+                         sal_uInt16 nId,
+                         SfxBindings*,
+                         SfxChildWinInfo*);
 
     SFX_DECL_CHILDWINDOW_WITHID( SwRedlineAcceptChild );
 
diff --git a/sw/source/uibase/misc/redlndlg.cxx b/sw/source/uibase/misc/redlndlg.cxx
index 71bcf99cc62b..6afaaa11712f 100644
--- a/sw/source/uibase/misc/redlndlg.cxx
+++ b/sw/source/uibase/misc/redlndlg.cxx
@@ -60,11 +60,11 @@ SFX_IMPL_MODELESSDIALOG_WITHID( SwRedlineAcceptChild, FN_REDLINE_ACCEPT )
 static sal_uInt16 nSortMode = 0xffff;
 static bool       bSortDir = true;
 
-SwRedlineAcceptChild::SwRedlineAcceptChild( vcl::Window* _pParent,
-                                            sal_uInt16 nId,
-                                            SfxBindings* pBindings,
-                                            SfxChildWinInfo const * pInfo ) :
-    SwChildWinWrapper( _pParent, nId )
+SwRedlineAcceptChild::SwRedlineAcceptChild(vcl::Window* _pParent,
+                                           sal_uInt16 nId,
+                                           SfxBindings* pBindings,
+                                           SfxChildWinInfo* pInfo)
+    : SwChildWinWrapper(_pParent, nId)
 {
     SetWindow( VclPtr<SwModelessRedlineAcceptDlg>::Create( pBindings, this, _pParent) );
 
@@ -122,7 +122,7 @@ void SwModelessRedlineAcceptDlg::Activate()
     pImplDlg->Activate();
 }
 
-void SwModelessRedlineAcceptDlg::Initialize(SfxChildWinInfo const *pInfo)
+void SwModelessRedlineAcceptDlg::Initialize(SfxChildWinInfo* pInfo)
 {
     if (pInfo != nullptr)
         pImplDlg->Initialize(pInfo->aExtraString);
@@ -1160,45 +1160,58 @@ IMPL_LINK_NOARG(SwRedlineAcceptDlg, CommandHdl, SvSimpleTable*, void)
     }
 }
 
-void SwRedlineAcceptDlg::Initialize(const OUString& rExtraData)
+namespace
 {
-    if (!rExtraData.isEmpty())
+    OUString lcl_StripAcceptChgDat(OUString &rExtraString)
     {
-        sal_Int32 nPos = rExtraData.indexOf("AcceptChgDat:");
-
-        // try to read the alignment string "ALIGN:(...)"; if none existing,
-        // it's an old version
-        if (nPos != -1)
+        OUString aStr;
+        while(true)
         {
-            sal_Int32 n1 = rExtraData.indexOf('(', nPos);
+            sal_Int32 nPos = rExtraString.indexOf("AcceptChgDat:");
+            if (nPos == -1)
+                break;
+            // try to read the alignment string "ALIGN:(...)"; if none existing,
+            // it's an old version
+            sal_Int32 n1 = rExtraString.indexOf('(', nPos);
             if (n1 != -1)
             {
-                sal_Int32 n2 = rExtraData.indexOf(')', n1);
+                sal_Int32 n2 = rExtraString.indexOf(')', n1);
                 if (n2 != -1)
                 {
                     // cut out the alignment string
-                    OUString aStr = rExtraData.copy(nPos, n2 - nPos + 1);
+                    aStr = rExtraString.copy(nPos, n2 - nPos + 1);
+                    rExtraString = rExtraString.replaceAt(nPos, n2 - nPos + 1, "");
                     aStr = aStr.copy(n1 - nPos + 1);
-
-                    if (!aStr.isEmpty())
-                    {
-                        sal_uInt16 nCount = static_cast< sal_uInt16 >(aStr.toInt32());
-
-                        for (sal_uInt16 i = 0; i < nCount; i++)
-                        {
-                            sal_Int32 n3 = aStr.indexOf(';');
-                            aStr = aStr.copy(n3 + 1);
-                            m_pTable->SetTab(i, aStr.toInt32(), MapUnit::MapPixel);
-                        }
-                    }
                 }
             }
         }
+        return aStr;
+    }
+}
+
+void SwRedlineAcceptDlg::Initialize(OUString& rExtraString)
+{
+    if (!rExtraString.isEmpty())
+    {
+        OUString aStr = lcl_StripAcceptChgDat(rExtraString);
+        if (!aStr.isEmpty())
+        {
+            sal_uInt16 nCount = static_cast<sal_uInt16>(aStr.toInt32());
+
+            for (sal_uInt16 i = 0; i < nCount; ++i)
+            {
+                sal_Int32 n1 = aStr.indexOf(';');
+                aStr = aStr.copy(n1 + 1);
+                m_pTable->SetTab(i, aStr.toInt32(), MapUnit::MapPixel);
+            }
+        }
     }
 }
 
 void SwRedlineAcceptDlg::FillInfo(OUString &rExtraData) const
 {
+    //remove any old one before adding a new one
+    lcl_StripAcceptChgDat(rExtraData);
     rExtraData += "AcceptChgDat:(";
 
     sal_uInt16  nCount = m_pTable->TabCount();


More information about the Libreoffice-commits mailing list