diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2020-02-20 13:22:12 +0100 |
---|---|---|
committer | Michael Stahl <michael.stahl@cib.de> | 2020-02-20 14:12:29 +0100 |
commit | 796aeeb0f4c26824f3477b45e0d3bae9cf2c4648 (patch) | |
tree | b72a25b01373e503cd230aae5abd0f3df16cbaa5 /sw | |
parent | 4e97fa0f4e73acdf522643aeec486b1395e63727 (diff) |
tdf#129553 sw_redlinehide follow-up: simplify ReplaceBackReferences()
In the special case of bParaEnd the nStart/nEnd aren't actually used so
it's pointless go to to all this trouble; refactor this so it's more
obvious.
Change-Id: I0328950e11d86a2313be64f6c662afd1898185e0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89092
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/crsr/findtxt.cxx | 62 |
1 files changed, 29 insertions, 33 deletions
diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx index 817091462d51..cda6ef6161b3 100644 --- a/sw/source/core/crsr/findtxt.cxx +++ b/sw/source/core/crsr/findtxt.cxx @@ -1117,45 +1117,41 @@ o3tl::optional<OUString> ReplaceBackReferences(const i18nutil::SearchOptions2& r : pTextNode == pMarkTextNode)) { utl::TextSearch aSText( utl::TextSearch::UpgradeToSearchOptions2( rSearchOpt) ); - OUString rStr = pLayout - ? pFrame->GetText() - : pTextNode->GetTextNode()->GetText(); - AmbiguousIndex nStart; - AmbiguousIndex nEnd; - if (pLayout) + SearchResult aResult; + OUString aReplaceStr( rSearchOpt.replaceString ); + if (bParaEnd) { - SwTextFrame const*const pStartFrame( - bParaEnd && *pPam->GetMark() < *pPam->GetPoint() - ? static_cast<SwTextFrame const*>(pMarkTextNode->getLayoutFrame(pLayout)) - : pFrame); - SwTextFrame const*const pEndFrame( - bParaEnd && *pPam->GetPoint() <= *pPam->GetMark() - ? static_cast<SwTextFrame const*>(pMarkTextNode->getLayoutFrame(pLayout)) - : pFrame); - nStart.SetFrameIndex(pStartFrame->MapModelToViewPos(*pPam->Start())); - nEnd.SetFrameIndex(pEndFrame->MapModelToViewPos(*pPam->End())); + OUString const aStr("\\n"); + aResult.subRegExpressions = 1; + aResult.startOffset.realloc(1); + aResult.endOffset.realloc(1); + aResult.startOffset[0] = 0; + aResult.endOffset[0] = aStr.getLength(); + aSText.ReplaceBackReferences( aReplaceStr, aStr, aResult ); + xRet = aReplaceStr; } else { - nStart.SetModelIndex(pPam->Start()->nContent.GetIndex()); - nEnd.SetModelIndex(pPam->End()->nContent.GetIndex()); - } - SearchResult aResult; - if (bParaEnd || - aSText.SearchForward(rStr, &nStart.GetAnyIndex(), &nEnd.GetAnyIndex(), &aResult)) - { - if ( bParaEnd ) + OUString const aStr(pLayout + ? pFrame->GetText() + : pTextNode->GetTextNode()->GetText()); + AmbiguousIndex nStart; + AmbiguousIndex nEnd; + if (pLayout) { - rStr = "\\n"; - aResult.subRegExpressions = 1; - aResult.startOffset.realloc(1); - aResult.endOffset.realloc(1); - aResult.startOffset[0] = 0; - aResult.endOffset[0] = rStr.getLength(); + nStart.SetFrameIndex(pFrame->MapModelToViewPos(*pPam->Start())); + nEnd.SetFrameIndex(pFrame->MapModelToViewPos(*pPam->End())); + } + else + { + nStart.SetModelIndex(pPam->Start()->nContent.GetIndex()); + nEnd.SetModelIndex(pPam->End()->nContent.GetIndex()); + } + if (aSText.SearchForward(aStr, &nStart.GetAnyIndex(), &nEnd.GetAnyIndex(), &aResult)) + { + aSText.ReplaceBackReferences( aReplaceStr, aStr, aResult ); + xRet = aReplaceStr; } - OUString aReplaceStr( rSearchOpt.replaceString ); - aSText.ReplaceBackReferences( aReplaceStr, rStr, aResult ); - xRet = aReplaceStr; } } } |