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

Commit b428a7bc authored by Peter Kalauskas's avatar Peter Kalauskas Committed by Automerger Merge Worker
Browse files

Merge "Fix visibility issue in QS detail panels" into sc-dev am: 8527610e am: 17e41389

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15278212

Change-Id: Ib0ee08a46cb231a942d8981797bf1f79ac2ae17f
parents 8edff180 17e41389
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -72,7 +72,8 @@ public interface DetailAdapter {
    }

    /**
     * @return if detail panel should animate when shown or closed
     * Indicates whether the detail view wants to animate when shown. This has no affect over the
     * closing animation. Detail panels will always animate when closed.
     */
    default boolean shouldAnimate() {
        return true;
+14 −4
Original line number Diff line number Diff line
@@ -212,6 +212,11 @@ public class QSDetail extends LinearLayout {
                Dependency.get(CommandQueue.class).animateCollapsePanels();
                mTriggeredExpand = false;
            }
            // Always animate on close, even if the last opened detail adapter had shouldAnimate()
            // return false. This is necessary to avoid a race condition which could leave the
            // keyguard in a bad state where QS remains visible underneath the notifications, clock,
            // and status area.
            mShouldAnimate = true;
        }

        boolean visibleDiff = wasShowingDetail != showingDetail;
@@ -245,11 +250,16 @@ public class QSDetail extends LinearLayout {
            mClosingDetail = true;
            mDetailAdapter = null;
            listener = mTeardownDetailWhenDone;
            // Only update visibility if already expanded. Otherwise, a race condition can cause the
            // keyguard to enter a bad state where the QS tiles are displayed underneath the
            // notifications, clock, and status area.
            if (mQsPanelController.isExpanded()) {
                mHeader.setVisibility(View.VISIBLE);
                mFooter.setVisibility(View.VISIBLE);
                mQsPanelController.setGridContentVisibility(true);
                mQsPanelCallback.onScanStateChanged(false);
            }
        }
        sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
        animateDetailVisibleDiff(x, y, visibleDiff, listener);
        if (mContainer != null) {
+4 −1
Original line number Diff line number Diff line
@@ -1622,7 +1622,10 @@ public class NotificationPanelViewController extends PanelViewController {
    public void expandWithQsDetail(DetailAdapter qsDetailAdapter) {
        traceQsJank(true /* startTracing */, false /* wasCancelled */);
        flingSettings(0 /* velocity */, FLING_EXPAND);
        mQSDetailDisplayer.showDetailAdapter(qsDetailAdapter, 0, 0);
        // When expanding with a panel, there's no meaningful touch point to correspond to. Set the
        // origin to somewhere above the screen. This is used for animations.
        int x = mQsFrame.getWidth() / 2;
        mQSDetailDisplayer.showDetailAdapter(qsDetailAdapter, x, -getHeight());
        if (mAccessibilityManager.isEnabled()) {
            mView.setAccessibilityPaneTitle(determineAccessibilityPaneTitle());
        }
+3 −1
Original line number Diff line number Diff line
@@ -148,8 +148,10 @@ public class QSDetailTest extends SysuiTestCase {
                eq(true) /* in */, any());
        clearInvocations(mQsDetail.mClipper);

        // Detail adapters should always animate on close. shouldAnimate() should only affect the
        // open transition
        mQsDetail.handleShowingDetail(null, 0, 0, false);
        verify(mQsDetail.mClipper).updateCircularClip(eq(false) /* animate */, anyInt(), anyInt(),
        verify(mQsDetail.mClipper).updateCircularClip(eq(true) /* animate */, anyInt(), anyInt(),
                eq(false) /* in */, any());
    }