diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-04-23 11:06:20 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-04-30 15:18:16 +0200 |
commit | 80c1d52946d3d60721f7d76e537caa722a5ca5a6 (patch) | |
tree | ce428ba5866331c0a658d20616b8612b7d5f4734 /sc | |
parent | 45d2f8a4bdd2c805b11ab374fb4946a2c079e7ee (diff) |
multiple concatted AcceptChgDat stored in config
FillInfo is called more often than Initialize, so we've ended up
with multiple AcceptChgDat strings
Change-Id: I99e9398757d63e2c6315ec9c3101910d5978b13b
Reviewed-on: https://gerrit.libreoffice.org/71120
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/miscdlgs/acredlin.cxx | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/sc/source/ui/miscdlgs/acredlin.cxx b/sc/source/ui/miscdlgs/acredlin.cxx index b1294a0ddff6..3349eee8e910 100644 --- a/sc/source/ui/miscdlgs/acredlin.cxx +++ b/sc/source/ui/miscdlgs/acredlin.cxx @@ -1714,34 +1714,43 @@ IMPL_LINK_NOARG(ScAcceptChgDlg, CommandHdl, SvSimpleTable*, void) } } -void ScAcceptChgDlg::Initialize(SfxChildWinInfo *pInfo) +namespace { - OUString aStr; - if(pInfo!=nullptr) + //at one point we were writing multiple AcceptChgDat strings, + //so strip all of them and keep the results of the last one + OUString lcl_StripAcceptChgDat(OUString &rExtraString) { - if ( !pInfo->aExtraString.isEmpty() ) + OUString aStr; + while (true) { - sal_Int32 nPos = pInfo->aExtraString.indexOf("AcceptChgDat:"); - + sal_Int32 nPos = rExtraString.indexOf("AcceptChgDat:"); + if (nPos == -1) + break; // Try to read the alignment string "ALIGN:(...)"; if it is missing // we have an old version - if ( nPos != -1 ) + sal_Int32 n1 = rExtraString.indexOf('(', nPos); + if ( n1 != -1 ) { - sal_Int32 n1 = pInfo->aExtraString.indexOf('(', nPos); - if ( n1 != -1 ) + sal_Int32 n2 = rExtraString.indexOf(')', n1); + if ( n2 != -1 ) { - sal_Int32 n2 = pInfo->aExtraString.indexOf(')', n1); - if ( n2 != -1 ) - { - // cut out alignment string - aStr = pInfo->aExtraString.copy(nPos, n2 - nPos + 1); - pInfo->aExtraString = pInfo->aExtraString.replaceAt(nPos, n2 - nPos + 1, ""); - aStr = aStr.copy( n1-nPos+1 ); - } + // cut out alignment string + aStr = rExtraString.copy(nPos, n2 - nPos + 1); + rExtraString = rExtraString.replaceAt(nPos, n2 - nPos + 1, ""); + aStr = aStr.copy( n1-nPos+1 ); } } } + return aStr; } +} + +void ScAcceptChgDlg::Initialize(SfxChildWinInfo *pInfo) +{ + OUString aStr; + if (pInfo && !pInfo->aExtraString.isEmpty()) + aStr = lcl_StripAcceptChgDat(pInfo->aExtraString); + SfxModelessDialog::Initialize(pInfo); if ( !aStr.isEmpty()) @@ -1760,6 +1769,8 @@ void ScAcceptChgDlg::Initialize(SfxChildWinInfo *pInfo) void ScAcceptChgDlg::FillInfo(SfxChildWinInfo& rInfo) const { SfxModelessDialog::FillInfo(rInfo); + //remove any old one before adding a new one + lcl_StripAcceptChgDat(rInfo.aExtraString); rInfo.aExtraString += "AcceptChgDat:("; sal_uInt16 nCount=pTheView->TabCount(); |