sw/source/core/edit/autofmt.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
New commits: commit b69bc0facc6e0fbc2006125e656b82a7c2556203 Author: Michael Stahl <[email protected]> AuthorDate: Thu May 2 18:27:07 2019 +0200 Commit: Michael Stahl <[email protected]> CommitDate: Fri May 3 10:23:04 2019 +0200 tdf#123285 sw_redlinehide: fix SwAutoFormat::DelMoreLinesBlanks() The "Delete spaces and tabs at end and start of line" AutoFormat option was deleting the wrong characters: on the 2nd line, it deletes the spaces as it should, but on subsequent lines the selection is off by the number of characters that have already been removed. The range indexes are now integers, so not automatically corrected on deletions like the SwIndex they were before; in this case, where only plain characters are deleted, it should suffice to iterate the ranges in reverse order to avoid the problem. (regression from 180e5f515c9cd21fb8057c797a480eca7d9ed260) Change-Id: Ie8e08c00803d94e700cd5b64f29edb0b841eda2b Reviewed-on: https://gerrit.libreoffice.org/71686 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> diff --git a/sw/source/core/edit/autofmt.cxx b/sw/source/core/edit/autofmt.cxx index 740b3cc1f99b..36319230508d 100644 --- a/sw/source/core/edit/autofmt.cxx +++ b/sw/source/core/edit/autofmt.cxx @@ -1308,8 +1308,10 @@ void SwAutoFormat::DelMoreLinesBlanks( bool bWithLineBreaks ) std::vector<std::pair<TextFrameIndex, TextFrameIndex>> spaces; aFInfo.GetSpaces(spaces, !m_aFlags.bAFormatByInput || bWithLineBreaks); - for (auto & rSpaceRange : spaces) + // tdf#123285 iterate backwards - delete invalidates following indexes + for (auto iter = spaces.rbegin(); iter != spaces.rend(); ++iter) { + auto & rSpaceRange(*iter); assert(rSpaceRange.first != rSpaceRange.second); bool const bHasBlanks = HasSelBlanks( m_pCurTextFrame, rSpaceRange.first, _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
