aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod
diff options
context:
space:
mode:
authorKurt Partridge <kep@google.com>2012-12-03 11:46:25 -0800
committerKurt Partridge <kep@google.com>2012-12-03 16:39:58 -0800
commitb10ec5319b1ce5d0e61af73840aabc00707a5e4c (patch)
treeb1db8e25b0e6e457470f4cb0774cf4d94fb0f86b /java/src/com/android/inputmethod
parentaa5a3e84ad330f55edda3087a9498c5ee16b9cba (diff)
downloadlatinime-b10ec5319b1ce5d0e61af73840aabc00707a5e4c.tar.gz
latinime-b10ec5319b1ce5d0e61af73840aabc00707a5e4c.tar.xz
latinime-b10ec5319b1ce5d0e61af73840aabc00707a5e4c.zip
Fix crashes related to setSpan(-1 ... -1) errors
Fixes b/7652661 In some circumstnaces, when hiding the window, the logger tries to capture the TextView contents and restore the cursor position based on the values stored in LatinIME. However, the IME may not know the cursor position. This fix does two things 1) doesn't try to reposition the cursor if the TextView contents are not to be captured, and 2) if the cursor position is unknown (i.e., == -1), doesn't try to move it back. Change-Id: I3976aaccf58c18f892c3a8530218ae52bcac9989
Diffstat (limited to 'java/src/com/android/inputmethod')
-rw-r--r--java/src/com/android/inputmethod/research/ResearchLogger.java22
1 files changed, 12 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/research/ResearchLogger.java b/java/src/com/android/inputmethod/research/ResearchLogger.java
index fe31039e3..3443b7a7a 100644
--- a/java/src/com/android/inputmethod/research/ResearchLogger.java
+++ b/java/src/com/android/inputmethod/research/ResearchLogger.java
@@ -925,18 +925,20 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
public static void latinIME_onWindowHidden(final int savedSelectionStart,
final int savedSelectionEnd, final InputConnection ic) {
if (ic != null) {
- // Capture the TextView contents. This will trigger onUpdateSelection(), so we
- // set sLatinIMEExpectingUpdateSelection so that when onUpdateSelection() is called,
- // it can tell that it was generated by the logging code, and not by the user, and
- // therefore keep user-visible state as is.
- ic.beginBatchEdit();
- ic.performContextMenuAction(android.R.id.selectAll);
- CharSequence charSequence = ic.getSelectedText(0);
- ic.setSelection(savedSelectionStart, savedSelectionEnd);
- ic.endBatchEdit();
- sLatinIMEExpectingUpdateSelection = true;
final Object[] values = new Object[2];
if (OUTPUT_ENTIRE_BUFFER) {
+ // Capture the TextView contents. This will trigger onUpdateSelection(), so we
+ // set sLatinIMEExpectingUpdateSelection so that when onUpdateSelection() is called,
+ // it can tell that it was generated by the logging code, and not by the user, and
+ // therefore keep user-visible state as is.
+ ic.beginBatchEdit();
+ ic.performContextMenuAction(android.R.id.selectAll);
+ CharSequence charSequence = ic.getSelectedText(0);
+ if (savedSelectionStart != -1 && savedSelectionEnd != -1) {
+ ic.setSelection(savedSelectionStart, savedSelectionEnd);
+ }
+ ic.endBatchEdit();
+ sLatinIMEExpectingUpdateSelection = true;
if (TextUtils.isEmpty(charSequence)) {
values[0] = false;
values[1] = "";