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

Commit 653828d0 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Restore force relayout logic for apps targeting < R

Test: Open IME in Telegram
Fixes: 153832271
Change-Id: I0c26bbaeb22b06718054fccdec0b550129ccecf8
parent 3546dac0
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -981,6 +981,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     */
    protected static boolean sBrokenWindowBackground;
    /**
     * Prior to R, we were always forcing a layout of the entire hierarchy when insets changed from
     * the server. This is inefficient and not all apps use it. Instead, we want to rely on apps
     * calling {@link #requestLayout} when they need to relayout based on an insets change.
     */
    static boolean sForceLayoutWhenInsetsChanged;
    /** @hide */
    @IntDef({NOT_FOCUSABLE, FOCUSABLE, FOCUSABLE_AUTO})
    @Retention(RetentionPolicy.SOURCE)
@@ -5375,6 +5382,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            GradientDrawable.sWrapNegativeAngleMeasurements =
                    targetSdkVersion >= Build.VERSION_CODES.Q;
            sForceLayoutWhenInsetsChanged = targetSdkVersion < Build.VERSION_CODES.R;
            sCompatibilityDone = true;
        }
    }
+5 −0
Original line number Diff line number Diff line
@@ -1584,6 +1584,11 @@ public final class ViewRootImpl implements ViewParent,
        mApplyInsetsRequested = true;
        requestLayout();

        // See comment for View.sForceLayoutWhenInsetsChanged
        if (View.sForceLayoutWhenInsetsChanged && mView != null) {
            forceLayout(mView);
        }

        // If this changes during traversal, no need to schedule another one as it will dispatch it
        // during the current traversal.
        if (!mIsInTraversal) {