Merge "Listen for overlay package changes to update the movement bounds"
This commit is contained in:
@@ -34,6 +34,7 @@ import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.util.Size;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Display;
|
||||
import android.view.DisplayInfo;
|
||||
import android.view.Gravity;
|
||||
import android.window.WindowContainerTransaction;
|
||||
@@ -60,7 +61,7 @@ public class PipBoundsHandler {
|
||||
private final PipSnapAlgorithm mSnapAlgorithm;
|
||||
private final DisplayInfo mDisplayInfo = new DisplayInfo();
|
||||
private final DisplayController mDisplayController;
|
||||
private final DisplayLayout mDisplayLayout;
|
||||
private DisplayLayout mDisplayLayout;
|
||||
|
||||
private ComponentName mLastPipComponentName;
|
||||
private float mReentrySnapFraction = INVALID_SNAP_FRACTION;
|
||||
@@ -288,6 +289,10 @@ public class PipBoundsHandler {
|
||||
return mDefaultAspectRatio;
|
||||
}
|
||||
|
||||
public void onOverlayChanged(Context context, Display display) {
|
||||
mDisplayLayout = new DisplayLayout(context, display);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updatest the display info and display layout on rotation change. This is needed even when we
|
||||
* aren't in PIP because the rotation layout is used to calculate the proper insets for the
|
||||
|
||||
@@ -53,10 +53,12 @@ import com.android.systemui.shared.system.InputConsumerController;
|
||||
import com.android.systemui.shared.system.PinnedStackListenerForwarder.PinnedStackListener;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.FloatingContentCoordinator;
|
||||
import com.android.systemui.wm.DisplayChangeController;
|
||||
import com.android.systemui.wm.DisplayController;
|
||||
import com.android.systemui.wm.DisplayLayout;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -234,6 +236,19 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
|
||||
}
|
||||
}
|
||||
|
||||
public ConfigurationController.ConfigurationListener mOverlayChangedListener =
|
||||
new ConfigurationController.ConfigurationListener() {
|
||||
@Override
|
||||
public void onOverlayChanged() {
|
||||
mHandler.post(() -> {
|
||||
mPipBoundsHandler.onOverlayChanged(mContext, mContext.getDisplay());
|
||||
updateMovementBounds(null /* toBounds */,
|
||||
false /* fromRotation */, false /* fromImeAdjustment */,
|
||||
false /* fromShelfAdjustment */, null /* windowContainerTransaction */);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@Inject
|
||||
public PipManager(Context context, BroadcastDispatcher broadcastDispatcher,
|
||||
DisplayController displayController,
|
||||
@@ -242,7 +257,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
|
||||
PipBoundsHandler pipBoundsHandler,
|
||||
PipSnapAlgorithm pipSnapAlgorithm,
|
||||
PipTaskOrganizer pipTaskOrganizer,
|
||||
SysUiState sysUiState) {
|
||||
SysUiState sysUiState,
|
||||
ConfigurationController configController) {
|
||||
mContext = context;
|
||||
mActivityManager = ActivityManager.getService();
|
||||
|
||||
@@ -275,6 +291,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
|
||||
context.getDisplay().getDisplayInfo(displayInfo);
|
||||
mPipBoundsHandler.onDisplayInfoChanged(displayInfo);
|
||||
|
||||
configController.addCallback(mOverlayChangedListener);
|
||||
|
||||
try {
|
||||
mPipTaskOrganizer.registerOrganizer(WINDOWING_MODE_PINNED);
|
||||
ActivityManager.StackInfo stackInfo = ActivityTaskManager.getService().getStackInfo(
|
||||
|
||||
Reference in New Issue
Block a user