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:
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user