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

Commit fcc3348f authored by Fabrice Di Meglio's avatar Fabrice Di Meglio
Browse files

Fix bug #7374285 GridLayout layout param margins are broken in RTL mode

- resolve layout params in ViewGroup when layout direction is changed
- layout param resolution is checking the previous layout direction to
check if we need to resolve

Change-Id: I70af2ad2b4ec83c2ec6c93b3ff445852500d1687
parent fc2652ef
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -10002,8 +10002,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    /**
     * Resolve the layout parameters depending on the resolved layout direction
     *
     * @hide
     */
    private void resolveLayoutParams() {
    public void resolveLayoutParams() {
        if (mLayoutParams != null) {
            mLayoutParams.resolveLayoutDirection(getLayoutDirection());
        }
+15 −0
Original line number Diff line number Diff line
@@ -5358,6 +5358,16 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        }
    }

    @Override
    public void resolveLayoutParams() {
        super.resolveLayoutParams();
        int count = getChildCount();
        for (int i = 0; i < count; i++) {
            final View child = getChildAt(i);
            child.resolveLayoutParams();
        }
    }

    /**
     * @hide
     */
@@ -5981,6 +5991,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
         */
        @Override
        public void resolveLayoutDirection(int layoutDirection) {
            // No need to resolve if it is the same layout direction as before
            if (this.layoutDirection == layoutDirection) {
                return;
            }

            setLayoutDirection(layoutDirection);

            if (!isMarginRelative()) return;