Merge "Using correct window bounds in multi-window for fallback activity" into ub-launcher3-master
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 74e5959..d214b13 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -79,6 +79,7 @@
import com.android.systemui.shared.system.TaskStackChangeListener;
import java.util.ArrayList;
+import java.util.function.Consumer;
/**
* A list of recent tasks.
@@ -188,6 +189,14 @@
private boolean mShowEmptyMessage;
private Layout mEmptyTextLayout;
+ private BaseActivity.MultiWindowModeChangedListener mMultiWindowModeChangedListener =
+ (inMultiWindowMode) -> {
+ if (!inMultiWindowMode && mOverviewStateEnabled) {
+ // TODO: Re-enable layout transitions for addition of the unpinned task
+ reloadIfNeeded();
+ }
+ };
+
public RecentsView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setPageSpacing(getResources().getDimensionPixelSize(R.dimen.recents_page_spacing));
@@ -251,6 +260,7 @@
super.onAttachedToWindow();
updateTaskStackListenerState();
Utilities.getPrefs(getContext()).registerOnSharedPreferenceChangeListener(this);
+ mActivity.addMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
}
@Override
@@ -258,6 +268,7 @@
super.onDetachedFromWindow();
updateTaskStackListenerState();
Utilities.getPrefs(getContext()).unregisterOnSharedPreferenceChangeListener(this);
+ mActivity.removeMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
}
@Override
diff --git a/src/com/android/launcher3/BaseActivity.java b/src/com/android/launcher3/BaseActivity.java
index ae631a4..c15cde5 100644
--- a/src/com/android/launcher3/BaseActivity.java
+++ b/src/com/android/launcher3/BaseActivity.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
+import android.content.res.Configuration;
import android.graphics.Point;
import android.view.Display;
import android.view.View.AccessibilityDelegate;
@@ -33,6 +34,8 @@
public abstract class BaseActivity extends Activity {
private final ArrayList<OnDeviceProfileChangeListener> mDPChangeListeners = new ArrayList<>();
+ private final ArrayList<MultiWindowModeChangedListener> mMultiWindowModeChangedListeners =
+ new ArrayList<>();
protected DeviceProfile mDeviceProfile;
protected UserEventDispatcher mUserEventDispatcher;
@@ -101,6 +104,14 @@
}
@Override
+ public void onMultiWindowModeChanged(boolean isInMultiWindowMode, Configuration newConfig) {
+ super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig);
+ for (int i = mMultiWindowModeChangedListeners.size() - 1; i >= 0; i--) {
+ mMultiWindowModeChangedListeners.get(i).onMultiWindowModeChanged(isInMultiWindowMode);
+ }
+ }
+
+ @Override
protected void onStop() {
mStarted = false;
mForceInvisible = false;
@@ -129,6 +140,14 @@
}
}
+ public void addMultiWindowModeChangedListener(MultiWindowModeChangedListener listener) {
+ mMultiWindowModeChangedListeners.add(listener);
+ }
+
+ public void removeMultiWindowModeChangedListener(MultiWindowModeChangedListener listener) {
+ mMultiWindowModeChangedListeners.remove(listener);
+ }
+
/**
* Used to set the override visibility state, used only to handle the transition home with the
* recents animation.
@@ -157,4 +176,8 @@
mDeviceProfile = mDeviceProfile.getMultiWindowProfile(this, mwSize);
}
}
+
+ public interface MultiWindowModeChangedListener {
+ void onMultiWindowModeChanged(boolean isInMultiWindowMode);
+ }
}