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

Commit 76865013 authored by Alex Chau's avatar Alex Chau Committed by Automerger Merge Worker
Browse files

Merge "Detect potential WindowConfiguration change at onApplyWindowInsets"...

Merge "Detect potential WindowConfiguration change at onApplyWindowInsets" into tm-qpr-dev am: 16b6511e

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/19559863



Change-Id: Ic6d5fbefee0487f8d6280a8dfeb46b3bf73156b5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents f2661363 16b6511e
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -15,6 +15,9 @@
 */
package com.android.launcher3;

import static android.app.WindowConfiguration.WINDOW_CONFIG_ROTATION;
import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION;

import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
import static com.android.launcher3.AbstractFloatingView.TYPE_HIDE_BACK_BUTTON;
import static com.android.launcher3.LauncherState.FLAG_HIDE_BACK_BUTTON;
@@ -43,6 +46,7 @@ import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
import android.content.res.Configuration;
import android.hardware.SensorManager;
import android.hardware.devicestate.DeviceStateManager;
import android.os.Bundle;
@@ -649,6 +653,20 @@ public abstract class BaseQuickstepLauncher extends Launcher {
        }
    }

    @Override
    protected boolean compareConfiguration(Configuration oldConfig, Configuration newConfig) {
        int diff = newConfig.diff(oldConfig);
        if ((diff & CONFIG_WINDOW_CONFIGURATION) != 0) {
            long windowDiff =
                    newConfig.windowConfiguration.diff(oldConfig.windowConfiguration, false);
            if ((windowDiff & WINDOW_CONFIG_ROTATION) != 0) {
                return true;
            }
        }

        return super.compareConfiguration(oldConfig, newConfig);
    }

    @Override
    public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
        super.dump(prefix, fd, writer, args);
+16 −4
Original line number Diff line number Diff line
@@ -15,8 +15,10 @@
 */
package com.android.quickstep;

import static android.app.WindowConfiguration.WINDOW_CONFIG_ROTATION;
import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE;
import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION;

import static com.android.launcher3.QuickstepTransitionManager.RECENTS_LAUNCH_DURATION;
import static com.android.launcher3.QuickstepTransitionManager.STATUS_BAR_TRANSITION_DURATION;
@@ -348,13 +350,23 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        int diff = newConfig.diff(mOldConfig);
        if ((diff & (CONFIG_ORIENTATION | CONFIG_SCREEN_SIZE)) != 0) {
    public void handleConfigurationChanged(Configuration newConfig) {
        if (compareConfiguration(mOldConfig, newConfig)) {
            onHandleConfigChanged();
        }
        mOldConfig.setTo(newConfig);
        super.onConfigurationChanged(newConfig);
        super.handleConfigurationChanged(newConfig);
    }

    private boolean compareConfiguration(Configuration oldConfig, Configuration newConfig) {
        int diff = newConfig.diff(oldConfig);
        if ((diff & CONFIG_WINDOW_CONFIGURATION) != 0) {
            long windowDiff =
                    newConfig.windowConfiguration.diff(oldConfig.windowConfiguration, false);
            return (windowDiff & WINDOW_CONFIG_ROTATION) != 0;
        }

        return (diff & (CONFIG_ORIENTATION | CONFIG_SCREEN_SIZE)) != 0;
    }

    @Override
+8 −4
Original line number Diff line number Diff line
@@ -615,14 +615,18 @@ public class Launcher extends StatefulActivity<LauncherState>
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        int diff = newConfig.diff(mOldConfig);
        if ((diff & (CONFIG_ORIENTATION | CONFIG_SCREEN_SIZE)) != 0) {
    public void handleConfigurationChanged(Configuration newConfig) {
        if (compareConfiguration(mOldConfig, newConfig)) {
            onIdpChanged(false);
        }

        mOldConfig.setTo(newConfig);
        super.onConfigurationChanged(newConfig);
        super.handleConfigurationChanged(newConfig);
    }

    protected boolean compareConfiguration(Configuration oldConfig, Configuration newConfig) {
        int diff = newConfig.diff(oldConfig);
        return (diff & (CONFIG_ORIENTATION | CONFIG_SCREEN_SIZE)) != 0;
    }

    /**
+2 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ public class LauncherRootView extends InsettableFrameLayout {

    @Override
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
        mActivity.handleConfigurationChanged(mActivity.getResources().getConfiguration());

        insets = WindowManagerProxy.INSTANCE.get(getContext())
                .normalizeWindowInsets(getContext(), insets, mTempRect);
        handleSystemWindowInsets(mTempRect);
+13 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.launcher3.statemanager;
import static com.android.launcher3.LauncherState.FLAG_CLOSE_POPUPS;
import static com.android.launcher3.LauncherState.FLAG_NON_INTERACTIVE;

import android.content.res.Configuration;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
@@ -186,4 +187,16 @@ public abstract class StatefulActivity<STATE_TYPE extends BaseState<STATE_TYPE>>
    public void runOnBindToTouchInteractionService(Runnable r) {
        r.run();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        handleConfigurationChanged(newConfig);
        super.onConfigurationChanged(newConfig);
    }

    /**
     * Handles configuration change when system calls {@link #onConfigurationChanged}, or on other
     * situations that configuration might change.
     */
    public void handleConfigurationChanged(Configuration newConfig) {}
}