From b1b8865017b9e8b4d06cb0f9bda0f615468292c2 Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Tue, 5 Apr 2016 16:26:16 +0900 Subject: [PATCH] Fix: Selection handle behavior in scrolled TextView. When dragging a selection handle, it moves to strange position in scrolled TextView because scroll position isn't took into account. This issue was introduced by rebase mistaking in I2a7e87ad08416f4bd01a5f6. Bug: 28008281 Change-Id: I6217483fcc0b9a7e661f02a1f276114ddd5031a4 --- core/java/android/widget/Editor.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index 47b034886ad83..fe876553a1cac 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -4878,11 +4878,12 @@ public class Editor { @Override protected int getOffsetAtCoordinate(@NonNull Layout layout, int line, float x) { - final int primaryOffset = layout.getOffsetForHorizontal(line, x, true); + final float localX = mTextView.convertToLocalHorizontalCoordinate(x); + final int primaryOffset = layout.getOffsetForHorizontal(line, localX, true); if (!layout.isLevelBoundary(primaryOffset)) { return primaryOffset; } - final int secondaryOffset = layout.getOffsetForHorizontal(line, x, false); + final int secondaryOffset = layout.getOffsetForHorizontal(line, localX, false); final int currentOffset = getCurrentCursorOffset(); final int primaryDiff = Math.abs(primaryOffset - currentOffset); final int secondaryDiff = Math.abs(secondaryOffset - currentOffset);