Fixing incorrect taskView size in multiwindow-landscape
RecentsView uses deviceProfile to calculate the padding.
Device profile had incorrect sizes in multiwindow mode as it
was not considering the insets.
Bug: 155816922
Change-Id: Iaa5b939624b4128ed634e6de1abf8453e2ae852b
diff --git a/src/com/android/launcher3/BaseDraggingActivity.java b/src/com/android/launcher3/BaseDraggingActivity.java
index 239d8a3..dcab127 100644
--- a/src/com/android/launcher3/BaseDraggingActivity.java
+++ b/src/com/android/launcher3/BaseDraggingActivity.java
@@ -24,6 +24,7 @@
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.content.res.Configuration;
+import android.graphics.Insets;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
@@ -35,6 +36,8 @@
import android.view.Display;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.WindowInsets.Type;
+import android.view.WindowMetrics;
import android.widget.Toast;
import androidx.annotation.Nullable;
@@ -51,6 +54,7 @@
import com.android.launcher3.util.PackageManagerHelper;
import com.android.launcher3.util.Themes;
import com.android.launcher3.util.TraceHelper;
+import com.android.launcher3.util.WindowBounds;
/**
* Extension of BaseActivity allowing support for drag-n-drop
@@ -272,15 +276,19 @@
protected abstract void reapplyUi();
- protected Rect getMultiWindowDisplaySize() {
+ protected WindowBounds getMultiWindowDisplaySize() {
if (Utilities.ATLEAST_R) {
- return new Rect(getWindowManager().getCurrentWindowMetrics().getBounds());
+ WindowMetrics wm = getWindowManager().getCurrentWindowMetrics();
+
+ Insets insets = wm.getWindowInsets().getInsets(Type.systemBars());
+ return new WindowBounds(wm.getBounds(),
+ new Rect(insets.left, insets.top, insets.right, insets.bottom));
}
// Note: Calls to getSize() can't rely on our cached DefaultDisplay since it can return
// the app window size
Display display = getWindowManager().getDefaultDisplay();
Point mwSize = new Point();
display.getSize(mwSize);
- return new Rect(0, 0, mwSize.x, mwSize.y);
+ return new WindowBounds(new Rect(0, 0, mwSize.x, mwSize.y), new Rect());
}
}