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

Commit 0e7ae4ef authored by Adrian Roos's avatar Adrian Roos
Browse files

Fix colored status bar panning issues

Bug: 17695293
Change-Id: I6a1267f8dff27e7b78ab312a71648ef16ab9483b
parent 09895be8
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1646,6 +1646,9 @@ public final class ViewRootImpl implements ViewParent,
                        mLastScrolledFocus.clear();
                    }
                    mScrollY = mCurScrollY = 0;
                    if (mView instanceof RootViewSurfaceTaker) {
                        ((RootViewSurfaceTaker) mView).onRootViewScrollYChanged(mCurScrollY);
                    }
                    if (mScroller != null) {
                        mScroller.abortAnimation();
                    }
@@ -2415,6 +2418,9 @@ public final class ViewRootImpl implements ViewParent,
        if (mCurScrollY != curScrollY) {
            mCurScrollY = curScrollY;
            fullRedrawNeeded = true;
            if (mView instanceof RootViewSurfaceTaker) {
                ((RootViewSurfaceTaker) mView).onRootViewScrollYChanged(mCurScrollY);
            }
        }

        final float appScale = mAttachInfo.mApplicationScale;
+16 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.internal.view;

import android.view.InputQueue;
@@ -10,4 +25,5 @@ public interface RootViewSurfaceTaker {
    void setSurfaceFormat(int format);
    void setSurfaceKeepScreenOn(boolean keepOn);
    InputQueue.Callback willYouTakeTheInputQueue();
    void onRootViewScrollYChanged(int scrollY);
}
+20 −0
Original line number Diff line number Diff line
@@ -2174,6 +2174,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
        private int mLastBottomInset = 0;
        private int mLastRightInset = 0;

        private int mRootScrollY = 0;

        public DecorView(Context context, int featureId) {
            super(context);
@@ -2875,6 +2876,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
                    view.setId(id);
                    addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, height,
                            Gravity.START | verticalGravity));
                    updateColorViewTranslations();
                }
            } else {
                int vis = show ? VISIBLE : INVISIBLE;
@@ -2891,6 +2893,18 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
            return view;
        }

        private void updateColorViewTranslations() {
            // Put the color views back in place when they get moved off the screen
            // due to the the ViewRootImpl panning.
            int rootScrollY = mRootScrollY;
            if (mStatusColorView != null) {
                mStatusColorView.setTranslationY(rootScrollY > 0 ? rootScrollY : 0);
            }
            if (mNavigationColorView != null) {
                mNavigationColorView.setTranslationY(rootScrollY < 0 ? rootScrollY : 0);
            }
        }

        private WindowInsets updateStatusGuard(WindowInsets insets) {
            boolean showStatusGuard = false;
            // Show the status guard when the non-overlay contextual action bar is showing
@@ -3149,6 +3163,12 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
            else PhoneWindow.this.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        }

        @Override
        public void onRootViewScrollYChanged(int rootScrollY) {
            mRootScrollY = rootScrollY;
            updateColorViewTranslations();
        }

        /**
         * Clears out internal reference when the action mode is destroyed.
         */