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) {
|
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) {
|
if ((mGravity & Gravity.VERTICAL_GRAVITY_MASK) != Gravity.TOP) {
|
||||||
paddingTop += getVerticalOffset(false);
|
offset += getVerticalOffset(false);
|
||||||
}
|
}
|
||||||
r.top += paddingTop;
|
return offset;
|
||||||
r.bottom += paddingTop;
|
|
||||||
|
|
||||||
int paddingLeft = getCompoundPaddingLeft();
|
|
||||||
r.left += paddingLeft;
|
|
||||||
r.right += paddingLeft;
|
|
||||||
|
|
||||||
r.offset(-mScrollX, -mScrollY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -7656,9 +7663,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
bounds.right = bounds.left + drawableWidth;
|
bounds.right = bounds.left + drawableWidth;
|
||||||
bounds.bottom = bounds.top + drawableHeight;
|
bounds.bottom = bounds.top + drawableHeight;
|
||||||
|
|
||||||
int boundTopBefore = bounds.top;
|
|
||||||
convertFromViewportToContentCoordinates(bounds);
|
convertFromViewportToContentCoordinates(bounds);
|
||||||
mHotSpotVerticalPosition += bounds.top - boundTopBefore;
|
|
||||||
mDrawable.setBounds(bounds);
|
mDrawable.setBounds(bounds);
|
||||||
postInvalidate();
|
postInvalidate();
|
||||||
}
|
}
|
||||||
@@ -7802,6 +7807,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
mOffsetX = (bounds.left + bounds.right) / 2.0f - x;
|
mOffsetX = (bounds.left + bounds.right) / 2.0f - x;
|
||||||
mOffsetY = mHandle.mHotSpotVerticalPosition - y;
|
mOffsetY = mHandle.mHotSpotVerticalPosition - y;
|
||||||
|
|
||||||
|
mOffsetX += viewportToContentHorizontalOffset();
|
||||||
|
mOffsetY += viewportToContentVerticalOffset();
|
||||||
|
|
||||||
mOnDownTimerStart = event.getEventTime();
|
mOnDownTimerStart = event.getEventTime();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -7991,6 +7999,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
mOffsetX = (bounds.left + bounds.right) / 2.0f - x;
|
mOffsetX = (bounds.left + bounds.right) / 2.0f - x;
|
||||||
mOffsetY = draggedHandle.mHotSpotVerticalPosition - y;
|
mOffsetY = draggedHandle.mHotSpotVerticalPosition - y;
|
||||||
|
|
||||||
|
mOffsetX += viewportToContentHorizontalOffset();
|
||||||
|
mOffsetY += viewportToContentVerticalOffset();
|
||||||
|
|
||||||
mOnDownTimerStart = event.getEventTime();
|
mOnDownTimerStart = event.getEventTime();
|
||||||
((ArrowKeyMovementMethod)mMovement).setCursorController(this);
|
((ArrowKeyMovementMethod)mMovement).setCursorController(this);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user