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

Commit 55e648f6 authored by Fengjiang Li's avatar Fengjiang Li
Browse files

Fix NPE of predictive back in TaskbarAllAppsSlideInView

Fix: 278597104
Test: tested predictive back in taskbar all apps view
Change-Id: I32e3cba5d26b3d05e9b7af584598bf04e512a684
parent 64b79a9f
Loading
Loading
Loading
Loading
+17 −10
Original line number Diff line number Diff line
@@ -71,13 +71,6 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverla
        } else {
            mTranslationShift = TRANSLATION_SHIFT_OPENED;
        }

        if (FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get()) {
            mAppsView.getAppsRecyclerViewContainer().setOutlineProvider(mViewOutlineProvider);
            mAppsView.getAppsRecyclerViewContainer().setClipToOutline(true);
            findOnBackInvokedDispatcher().registerOnBackInvokedCallback(
                    OnBackInvokedDispatcher.PRIORITY_DEFAULT, this);
        }
    }

    /** The apps container inside this view. */
@@ -88,9 +81,6 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverla
    @Override
    protected void handleClose(boolean animate) {
        handleClose(animate, mAllAppsCallbacks.getCloseDuration());
        if (FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get()) {
            findOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(this);
        }
    }

    @Override
@@ -121,12 +111,29 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverla
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        mActivityContext.addOnDeviceProfileChangeListener(this);
        if (FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get()) {
            mAppsView.getAppsRecyclerViewContainer().setOutlineProvider(mViewOutlineProvider);
            mAppsView.getAppsRecyclerViewContainer().setClipToOutline(true);
            OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher();
            if (dispatcher != null) {
                dispatcher.registerOnBackInvokedCallback(
                        OnBackInvokedDispatcher.PRIORITY_DEFAULT, this);
            }
        }
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        mActivityContext.removeOnDeviceProfileChangeListener(this);
        if (FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get()) {
            mAppsView.getAppsRecyclerViewContainer().setOutlineProvider(null);
            mAppsView.getAppsRecyclerViewContainer().setClipToOutline(false);
            OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher();
            if (dispatcher != null) {
                dispatcher.unregisterOnBackInvokedCallback(this);
            }
        }
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -179,7 +179,7 @@ public final class FeatureFlags {
    // TODO(Block 10): Clean up flags
    public static final BooleanFlag ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION = getDebugFlag(270614790,
            "ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION", DISABLED,
            "Enables predictive back aniamtion from all apps and widgets to home");
            "Enables predictive back animation from all apps and widgets to home");

    // TODO(Block 11): Clean up flags
    public static final BooleanFlag ENABLE_TWO_PANEL_HOME = getDebugFlag(270392643,