[Libreoffice-commits] core.git: vcl/source
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Tue Mar 26 21:14:53 UTC 2019
vcl/source/control/edit.cxx | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
New commits:
commit 8622dc09954a1a26661e3524c99e7ed0f456cf6e
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Mar 26 15:57:46 2019 +0000
Commit: Caolán McNamara <caolanm at 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 <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at 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
More information about the Libreoffice-commits
mailing list