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

Commit 016456e4 authored by Fabrice Di Meglio's avatar Fabrice Di Meglio
Browse files

Fix padding resolution

Change-Id: I2181a0a4057be0d20744b1512dbc1fbc53490d81
parent a9108a21
Loading
Loading
Loading
Loading
+37 −50
Original line number Diff line number Diff line
@@ -2766,13 +2766,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    @ViewDebug.ExportedProperty(category = "padding")
    protected int mUserPaddingLeft;
    /**
     * Cache if the user padding is relative.
     *
     */
    @ViewDebug.ExportedProperty(category = "padding")
    boolean mUserPaddingRelative;
    /**
     * Cache the paddingStart set by the user to append to the scrollbar's size.
     *
@@ -2787,6 +2780,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    @ViewDebug.ExportedProperty(category = "padding")
    int mUserPaddingEnd;
    /**
     * Default undefined padding
     */
    private static final int UNDEFINED_PADDING = Integer.MIN_VALUE;
    /**
     * @hide
     */
@@ -3098,9 +3096,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                (IMPORTANT_FOR_ACCESSIBILITY_DEFAULT << IMPORTANT_FOR_ACCESSIBILITY_SHIFT);
        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
        setOverScrollMode(OVER_SCROLL_IF_CONTENT_SCROLLS);
        mUserPaddingStart = -1;
        mUserPaddingEnd = -1;
        mUserPaddingRelative = false;
        mUserPaddingStart = UNDEFINED_PADDING;
        mUserPaddingEnd = UNDEFINED_PADDING;
    }
    /**
@@ -3166,8 +3163,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        int topPadding = -1;
        int rightPadding = -1;
        int bottomPadding = -1;
        int startPadding = -1;
        int endPadding = -1;
        int startPadding = UNDEFINED_PADDING;
        int endPadding = UNDEFINED_PADDING;
        int padding = -1;
@@ -3214,10 +3211,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                    bottomPadding = a.getDimensionPixelSize(attr, -1);
                    break;
                case com.android.internal.R.styleable.View_paddingStart:
                    startPadding = a.getDimensionPixelSize(attr, -1);
                    startPadding = a.getDimensionPixelSize(attr, UNDEFINED_PADDING);
                    break;
                case com.android.internal.R.styleable.View_paddingEnd:
                    endPadding = a.getDimensionPixelSize(attr, -1);
                    endPadding = a.getDimensionPixelSize(attr, UNDEFINED_PADDING);
                    break;
                case com.android.internal.R.styleable.View_scrollX:
                    x = a.getDimensionPixelOffset(attr, 0);
@@ -3494,16 +3491,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        setOverScrollMode(overScrollMode);
        if (background != null) {
            setBackground(background);
        }
        // Cache user padding as we cannot fully resolve padding here (we dont have yet the resolved
        // layout direction). Those cached values will be used later during padding resolution.
        mUserPaddingStart = startPadding;
        mUserPaddingEnd = endPadding;
        updateUserPaddingRelative();
        if (background != null) {
            setBackground(background);
        }
        if (padding >= 0) {
            leftPadding = padding;
@@ -3516,7 +3511,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        // android:paddingLeft/Top/Right/Bottom), use this padding, otherwise
        // use the default padding or the padding from the background drawable
        // (stored at this point in mPadding*)
        setPadding(leftPadding >= 0 ? leftPadding : mPaddingLeft,
        internalSetPadding(leftPadding >= 0 ? leftPadding : mPaddingLeft,
                topPadding >= 0 ? topPadding : mPaddingTop,
                rightPadding >= 0 ? rightPadding : mPaddingRight,
                bottomPadding >= 0 ? bottomPadding : mPaddingBottom);
@@ -3551,10 +3546,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        computeOpaqueFlags();
    }
    private void updateUserPaddingRelative() {
        mUserPaddingRelative = (mUserPaddingStart >= 0 || mUserPaddingEnd >= 0);
    }
    /**
     * Non-public constructor for use in testing
     */
@@ -5261,9 +5252,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     */
    protected boolean fitSystemWindows(Rect insets) {
        if ((mViewFlags & FITS_SYSTEM_WINDOWS) == FITS_SYSTEM_WINDOWS) {
            mUserPaddingStart = -1;
            mUserPaddingEnd = -1;
            mUserPaddingRelative = false;
            mUserPaddingStart = UNDEFINED_PADDING;
            mUserPaddingEnd = UNDEFINED_PADDING;
            if ((mViewFlags & OPTIONAL_FITS_SYSTEM_WINDOWS) == 0
                    || mAttachInfo == null
                    || (mAttachInfo.mSystemUiVisibility & SYSTEM_UI_LAYOUT_FLAGS) == 0) {
@@ -5537,6 +5527,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            // Set the new layout direction (filtered) and ask for a layout pass
            mPrivateFlags2 |=
                    ((layoutDirection << LAYOUT_DIRECTION_MASK_SHIFT) & LAYOUT_DIRECTION_MASK);
            resolvePadding();
            requestLayout();
        }
    }
@@ -10668,7 +10659,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @hide
     */
    protected void recomputePadding() {
        setPadding(mUserPaddingLeft, mPaddingTop, mUserPaddingRight, mUserPaddingBottom);
        internalSetPadding(mUserPaddingLeft, mPaddingTop, mUserPaddingRight, mUserPaddingBottom);
    }
    /**
@@ -11283,8 +11274,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        // Set to resolved
        mPrivateFlags2 |= LAYOUT_DIRECTION_RESOLVED;
        onResolvedLayoutDirectionChanged();
        // Resolve padding
        resolvePadding();
    }
    /**
@@ -11309,14 +11298,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                // Start user padding override Right user padding. Otherwise, if Right user
                // padding is not defined, use the default Right padding. If Right user padding
                // is defined, just use it.
                if (mUserPaddingStart >= 0) {
                if (mUserPaddingStart != UNDEFINED_PADDING) {
                    mUserPaddingRight = mUserPaddingStart;
                } else if (mUserPaddingRight < 0) {
                }
                if (mUserPaddingRight == UNDEFINED_PADDING) {
                    mUserPaddingRight = mPaddingRight;
                }
                if (mUserPaddingEnd >= 0) {
                if (mUserPaddingEnd != UNDEFINED_PADDING) {
                    mUserPaddingLeft = mUserPaddingEnd;
                } else if (mUserPaddingLeft < 0) {
                }
                if (mUserPaddingLeft == UNDEFINED_PADDING) {
                    mUserPaddingLeft = mPaddingLeft;
                }
                break;
@@ -11325,25 +11316,23 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                // Start user padding override Left user padding. Otherwise, if Left user
                // padding is not defined, use the default left padding. If Left user padding
                // is defined, just use it.
                if (mUserPaddingStart >= 0) {
                if (mUserPaddingStart != UNDEFINED_PADDING) {
                    mUserPaddingLeft = mUserPaddingStart;
                } else if (mUserPaddingLeft < 0) {
                }
                if (mUserPaddingLeft == UNDEFINED_PADDING) {
                    mUserPaddingLeft = mPaddingLeft;
                }
                if (mUserPaddingEnd >= 0) {
                if (mUserPaddingEnd != UNDEFINED_PADDING) {
                    mUserPaddingRight = mUserPaddingEnd;
                } else if (mUserPaddingRight < 0) {
                }
                if (mUserPaddingRight == UNDEFINED_PADDING) {
                    mUserPaddingRight = mPaddingRight;
                }
        }
        mUserPaddingBottom = (mUserPaddingBottom >= 0) ? mUserPaddingBottom : mPaddingBottom;
        if(isPaddingRelative()) {
            setPaddingRelative(mUserPaddingStart, mPaddingTop, mUserPaddingEnd, mUserPaddingBottom);
        } else {
            recomputePadding();
        }
        internalSetPadding(mUserPaddingLeft, mPaddingTop, mUserPaddingRight, mUserPaddingBottom);
        onPaddingChanged(resolvedLayoutDirection);
    }
@@ -14014,11 +14003,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            if (background.getPadding(padding)) {
                switch (background.getLayoutDirection()) {
                    case LAYOUT_DIRECTION_RTL:
                        setPadding(padding.right, padding.top, padding.left, padding.bottom);
                        internalSetPadding(padding.right, padding.top, padding.left, padding.bottom);
                        break;
                    case LAYOUT_DIRECTION_LTR:
                    default:
                        setPadding(padding.left, padding.top, padding.right, padding.bottom);
                        internalSetPadding(padding.left, padding.top, padding.right, padding.bottom);
                }
            }
@@ -14108,9 +14097,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @param bottom the bottom padding in pixels
     */
    public void setPadding(int left, int top, int right, int bottom) {
        mUserPaddingStart = -1;
        mUserPaddingEnd = -1;
        mUserPaddingRelative = false;
        mUserPaddingStart = UNDEFINED_PADDING;
        mUserPaddingEnd = UNDEFINED_PADDING;
        internalSetPadding(left, top, right, bottom);
    }
@@ -14192,7 +14180,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    public void setPaddingRelative(int start, int top, int end, int bottom) {
        mUserPaddingStart = start;
        mUserPaddingEnd = end;
        mUserPaddingRelative = true;
        switch(getResolvedLayoutDirection()) {
            case LAYOUT_DIRECTION_RTL:
@@ -14279,7 +14266,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @return true if the padding is relative or false if it is not.
     */
    public boolean isPaddingRelative() {
        return mUserPaddingRelative;
        return (mUserPaddingStart != UNDEFINED_PADDING || mUserPaddingEnd != UNDEFINED_PADDING);
    }
    /**