Reload the task list when multiwindow mode changes
Bug: 73097187 Change-Id: I05d8635f78451600cbb8a9c03515e60d3c32e1ae
This commit is contained in:
@@ -79,6 +79,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
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 @@ public abstract class RecentsView<T extends BaseActivity>
|
||||
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 @@ public abstract class RecentsView<T extends BaseActivity>
|
||||
super.onAttachedToWindow();
|
||||
updateTaskStackListenerState();
|
||||
Utilities.getPrefs(getContext()).registerOnSharedPreferenceChangeListener(this);
|
||||
mActivity.addMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -258,6 +268,7 @@ public abstract class RecentsView<T extends BaseActivity>
|
||||
super.onDetachedFromWindow();
|
||||
updateTaskStackListenerState();
|
||||
Utilities.getPrefs(getContext()).unregisterOnSharedPreferenceChangeListener(this);
|
||||
mActivity.removeMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.app.Activity;
|
||||
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 @@ import java.util.ArrayList;
|
||||
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;
|
||||
@@ -100,6 +103,14 @@ public abstract class BaseActivity extends Activity {
|
||||
super.onUserLeaveHint();
|
||||
}
|
||||
|
||||
@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;
|
||||
@@ -129,6 +140,14 @@ public abstract class BaseActivity extends Activity {
|
||||
}
|
||||
}
|
||||
|
||||
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 @@ public abstract class BaseActivity extends Activity {
|
||||
mDeviceProfile = mDeviceProfile.getMultiWindowProfile(this, mwSize);
|
||||
}
|
||||
}
|
||||
|
||||
public interface MultiWindowModeChangedListener {
|
||||
void onMultiWindowModeChanged(boolean isInMultiWindowMode);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user