Kaydet (Commit) 65f81f6a authored tarafından Caolán McNamara's avatar Caolán McNamara

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/71119
Tested-by: Jenkins
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst b5c0f1cd
......@@ -1701,34 +1701,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())
......@@ -1747,6 +1756,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();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment