summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGilles Debunne <debunne@google.com>2010-09-09 10:02:05 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-09-09 10:02:05 -0700
commitab86b782fd2c8c7b1e6b50d30482aa2b8f890e80 (patch)
tree60a8dfcb8368eda5d73b1f8c4aa80a16e66e5123 /core
parenta063cd6478254bba3290576ae5556abf469d6535 (diff)
parent44c1e4c72dea2d7ce077cc6fdc46e01bd863a642 (diff)
downloadframeworks_base-ab86b782fd2c8c7b1e6b50d30482aa2b8f890e80.zip
frameworks_base-ab86b782fd2c8c7b1e6b50d30482aa2b8f890e80.tar.gz
frameworks_base-ab86b782fd2c8c7b1e6b50d30482aa2b8f890e80.tar.bz2
Merge "Fix for text selection in horizontally scrolled TextViews." into gingerbread
Diffstat (limited to 'core')
-rw-r--r--core/java/android/widget/TextView.java35
1 files changed, 23 insertions, 12 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 3428206..fea53e5 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -5761,18 +5761,25 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
private void convertFromViewportToContentCoordinates(Rect r) {
- int paddingTop = getExtendedPaddingTop();
- if ((mGravity & Gravity.VERTICAL_GRAVITY_MASK) != Gravity.TOP) {
- paddingTop += getVerticalOffset(false);
- }
- r.top += paddingTop;
- r.bottom += paddingTop;
+ final int horizontalOffset = viewportToContentHorizontalOffset();
+ r.left += horizontalOffset;
+ r.right += horizontalOffset;
- int paddingLeft = getCompoundPaddingLeft();
- r.left += paddingLeft;
- r.right += paddingLeft;
+ final int verticalOffset = viewportToContentVerticalOffset();
+ r.top += verticalOffset;
+ r.bottom += verticalOffset;
+ }
- r.offset(-mScrollX, -mScrollY);
+ private int viewportToContentHorizontalOffset() {
+ return getCompoundPaddingLeft() - mScrollX;
+ }
+
+ private int viewportToContentVerticalOffset() {
+ int offset = getExtendedPaddingTop() - mScrollY;
+ if ((mGravity & Gravity.VERTICAL_GRAVITY_MASK) != Gravity.TOP) {
+ offset += getVerticalOffset(false);
+ }
+ return offset;
}
@Override
@@ -7651,9 +7658,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
bounds.right = bounds.left + drawableWidth;
bounds.bottom = bounds.top + drawableHeight;
- int boundTopBefore = bounds.top;
convertFromViewportToContentCoordinates(bounds);
- mHotSpotVerticalPosition += bounds.top - boundTopBefore;
mDrawable.setBounds(bounds);
postInvalidate();
}
@@ -7797,6 +7802,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
mOffsetX = (bounds.left + bounds.right) / 2.0f - x;
mOffsetY = mHandle.mHotSpotVerticalPosition - y;
+ mOffsetX += viewportToContentHorizontalOffset();
+ mOffsetY += viewportToContentVerticalOffset();
+
mOnDownTimerStart = event.getEventTime();
}
break;
@@ -7986,6 +7994,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
mOffsetX = (bounds.left + bounds.right) / 2.0f - x;
mOffsetY = draggedHandle.mHotSpotVerticalPosition - y;
+ mOffsetX += viewportToContentHorizontalOffset();
+ mOffsetY += viewportToContentVerticalOffset();
+
mOnDownTimerStart = event.getEventTime();
((ArrowKeyMovementMethod)mMovement).setCursorController(this);
}