am ab86b782: Merge "Fix for text selection in horizontally scrolled TextViews." into gingerbread

Merge commit 'ab86b782fd2c8c7b1e6b50d30482aa2b8f890e80' into gingerbread-plus-aosp

* commit 'ab86b782fd2c8c7b1e6b50d30482aa2b8f890e80':
  Fix for text selection in horizontally scrolled TextViews.
This commit is contained in:
Gilles Debunne
2010-09-09 10:04:32 -07:00
committed by Android Git Automerger

View File

@ -5766,18 +5766,25 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
private void convertFromViewportToContentCoordinates(Rect r) {
int paddingTop = getExtendedPaddingTop();
final int horizontalOffset = viewportToContentHorizontalOffset();
r.left += horizontalOffset;
r.right += horizontalOffset;
final int verticalOffset = viewportToContentVerticalOffset();
r.top += verticalOffset;
r.bottom += verticalOffset;
}
private int viewportToContentHorizontalOffset() {
return getCompoundPaddingLeft() - mScrollX;
}
private int viewportToContentVerticalOffset() {
int offset = getExtendedPaddingTop() - mScrollY;
if ((mGravity & Gravity.VERTICAL_GRAVITY_MASK) != Gravity.TOP) {
paddingTop += getVerticalOffset(false);
offset += getVerticalOffset(false);
}
r.top += paddingTop;
r.bottom += paddingTop;
int paddingLeft = getCompoundPaddingLeft();
r.left += paddingLeft;
r.right += paddingLeft;
r.offset(-mScrollX, -mScrollY);
return offset;
}
@Override
@ -7656,9 +7663,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();
}
@ -7802,6 +7807,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;
@ -7991,6 +7999,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);
}