Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab86b782 authored by Gilles Debunne's avatar Gilles Debunne Committed by Android (Google) Code Review
Browse files

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

parents a063cd64 44c1e4c7
Loading
Loading
Loading
Loading
+23 −12
Original line number Diff line number Diff line
@@ -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);
        final int horizontalOffset = viewportToContentHorizontalOffset();
        r.left += horizontalOffset;
        r.right += horizontalOffset;

        final int verticalOffset = viewportToContentVerticalOffset();
        r.top += verticalOffset;
        r.bottom += verticalOffset;
    }
        r.top += paddingTop;
        r.bottom += paddingTop;

        int paddingLeft = getCompoundPaddingLeft();
        r.left += paddingLeft;
        r.right += paddingLeft;
    private int viewportToContentHorizontalOffset() {
        return getCompoundPaddingLeft() - mScrollX;
    }

        r.offset(-mScrollX, -mScrollY);
    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);
                                }