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

Commit bdc56417 authored by Louis Chang's avatar Louis Chang Committed by Automerger Merge Worker
Browse files

[RESTRICT AUTOMERGE] Dimming on an embedded TaskFragment vs. parent Task am: 66a576b4

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

Change-Id: I32bda7781d759bb3e97a159c944638f8338bb904
parents 1f48a764 66a576b4
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -486,7 +486,6 @@ class Task extends TaskFragment {
    // root task moves and we in fact do so when moving from full screen to pinned.
    private boolean mPreserveNonFloatingState = false;

    private Dimmer mDimmer = new Dimmer(this);
    private final Rect mTmpDimBoundsRect = new Rect();

    /** @see #setCanAffectSystemUiFlags */
+30 −0
Original line number Diff line number Diff line
@@ -162,6 +162,8 @@ class TaskFragment extends WindowContainer<WindowContainer> {
     */
    int mMinHeight;

    Dimmer mDimmer = new Dimmer(this);

    /** This task fragment will be removed when the cleanup of its children are done. */
    private boolean mIsRemovalRequested;

@@ -2352,6 +2354,34 @@ class TaskFragment extends WindowContainer<WindowContainer> {
        sendTaskFragmentVanished();
    }

    @Override
    Dimmer getDimmer() {
        // If the window is in an embedded TaskFragment, we want to dim at the TaskFragment.
        if (asTask() == null) {
            return mDimmer;
        }

        return super.getDimmer();
    }

    @Override
    void prepareSurfaces() {
        if (asTask() != null) {
            super.prepareSurfaces();
            return;
        }

        mDimmer.resetDimStates();
        super.prepareSurfaces();

        // Bounds need to be relative, as the dim layer is a child.
        final Rect dimBounds = getBounds();
        dimBounds.offsetTo(0 /* newLeft */, 0 /* newTop */);
        if (mDimmer.updateDims(getPendingTransaction(), dimBounds)) {
            scheduleAnimation();
        }
    }

    @Override
    boolean canBeAnimationTarget() {
        return true;