vcl/source/control/edit.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
New commits: commit 8622dc09954a1a26661e3524c99e7ed0f456cf6e Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Mar 26 15:57:46 2019 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Mar 26 22:14:30 2019 +0100 Related: tdf#123291 treat overwrite like a selection of 1 for input into ImplTruncateToMaxLen like we do for the following erase Change-Id: I8cd02ff1ba76f61ddc614922068cbe2bc9bc4cb8 Reviewed-on: https://gerrit.libreoffice.org/69763 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index 72325742cac3..a4302902a3c8 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -793,13 +793,19 @@ void Edit::ImplInsertText( const OUString& rStr, const Selection* pNewSel, bool aSelection.Justify(); OUString aNewText( ImplGetValidString( rStr ) ); - ImplTruncateToMaxLen( aNewText, aSelection.Len() ); + + // as below, if there's no selection, but we're in overwrite mode and not beyond + // the end of the existing text then that's like a selection of 1 + auto nSelectionLen = aSelection.Len(); + if (!nSelectionLen && !mbInsertMode && aSelection.Max() < maText.getLength()) + nSelectionLen = 1; + ImplTruncateToMaxLen( aNewText, nSelectionLen ); ImplClearLayoutData(); if ( aSelection.Len() ) maText.remove( static_cast<sal_Int32>(aSelection.Min()), static_cast<sal_Int32>(aSelection.Len()) ); - else if ( !mbInsertMode && (aSelection.Max() < maText.getLength()) ) + else if (!mbInsertMode && aSelection.Max() < maText.getLength()) maText.remove( static_cast<sal_Int32>(aSelection.Max()), 1 ); // take care of input-sequence-checking now _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits