diff options
author | Justin Luth <justin_luth@sil.org> | 2015-10-16 20:41:12 +0300 |
---|---|---|
committer | Justin Luth <justin_luth@sil.org> | 2015-10-17 11:55:31 +0000 |
commit | d9cf47449e88032803aa4fa3429cd607a074d5ad (patch) | |
tree | 881dc7471480dcd17204c6d14de6c0430014fbc3 /vcl/unx | |
parent | a9b31303b76326e0dc0043082082c5fc1dc69be9 (diff) |
tdf#95096 avoid invalid cursor position exception
Somehow, accessible text can lose focus and so when
attempting to set the cursor, the string we were just
working with may no longer be available, so verify that
the cursor position is still valid before setting it.
If the text can just disappear like that, then potentially
we are still forcing the cursor into the wrong place
(since the string is different than expected). However
we can at least make sure the program doesn't
crash/exit without saving...
Change-Id: I8dcaf4625d187cb75008bdc0af0e3a546090a018
Reviewed-on: https://gerrit.libreoffice.org/19414
Reviewed-by: Justin Luth <justin_luth@sil.org>
Tested-by: Justin Luth <justin_luth@sil.org>
Diffstat (limited to 'vcl/unx')
-rw-r--r-- | vcl/unx/gtk/window/gtksalframe.cxx | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx index ebc85166caa5..25f3fe560e55 100644 --- a/vcl/unx/gtk/window/gtksalframe.cxx +++ b/vcl/unx/gtk/window/gtksalframe.cxx @@ -4712,9 +4712,12 @@ gboolean GtkSalFrame::IMHandler::signalIMDeleteSurrounding( GtkIMContext*, gint if (nDeletePos < nPosition) { if (nDeleteEnd <= nPosition) - xText->setCaretPosition( nPosition-(nDeleteEnd-nDeletePos) ); + nPosition = nPosition - (nDeleteEnd - nDeletePos); else - xText->setCaretPosition( nDeletePos ); + nPosition = nDeletePos; + + if (xText->getCharacterCount() >= nPosition) + xText->setCaretPosition( nPosition ); } return true; } |