Merge "Screenshots broken for activities with dialog themes" into pi-dev
am: a52ddd989e
Change-Id: I9ac4407f9fd30edd7ba53120d65e16df9264bc2c
This commit is contained in:
@@ -1728,6 +1728,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
|
||||
frame.set(win.mContainingFrame);
|
||||
}
|
||||
surfaceInsets = win.getAttrs().surfaceInsets;
|
||||
// XXX(b/72757033): These are insets relative to the window frame, but we're really
|
||||
// interested in the insets relative to the frame we chose in the if-blocks above.
|
||||
insets.set(win.mContentInsets);
|
||||
stableInsets.set(win.mStableInsets);
|
||||
}
|
||||
@@ -2120,4 +2122,12 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
|
||||
}
|
||||
return stringName + ((mIsExiting) ? " mIsExiting=" : "");
|
||||
}
|
||||
|
||||
Rect getLetterboxInsets() {
|
||||
if (mLetterbox != null) {
|
||||
return mLetterbox.getInsets();
|
||||
} else {
|
||||
return new Rect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,6 +67,17 @@ public class Letterbox {
|
||||
mRight.setRect(t, inner.right, outer.top, outer.right, inner.bottom);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the insets between the outer and inner rects.
|
||||
*/
|
||||
public Rect getInsets() {
|
||||
return new Rect(
|
||||
mLeft.getWidth(),
|
||||
mTop.getHeight(),
|
||||
mRight.getWidth(),
|
||||
mBottom.getHeight());
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides the letterbox.
|
||||
*
|
||||
@@ -141,5 +152,13 @@ public class Letterbox {
|
||||
mSurface = null;
|
||||
}
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return Math.max(0, mLastRight - mLastLeft);
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return Math.max(0, mLastBottom - mLastTop);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,17 +281,25 @@ class TaskSnapshotController {
|
||||
}
|
||||
|
||||
private Rect getInsetsFromTaskBounds(WindowState state, Task task) {
|
||||
final Rect r = new Rect();
|
||||
r.set(state.getContentFrameLw());
|
||||
r.intersectUnchecked(state.getStableFrameLw());
|
||||
// XXX(b/72757033): These are insets relative to the window frame, but we're really
|
||||
// interested in the insets relative to the task bounds.
|
||||
Rect insets = minRect(state.mContentInsets, state.mStableInsets);
|
||||
insets = maxRect(insets, state.mAppToken.getLetterboxInsets());
|
||||
return insets;
|
||||
}
|
||||
|
||||
final Rect taskBounds = task.getBounds();
|
||||
private Rect minRect(Rect rect1, Rect rect2) {
|
||||
return new Rect(Math.min(rect1.left, rect2.left),
|
||||
Math.min(rect1.top, rect2.top),
|
||||
Math.min(rect1.right, rect2.right),
|
||||
Math.min(rect1.bottom, rect2.bottom));
|
||||
}
|
||||
|
||||
r.set(Math.max(0, r.left - taskBounds.left),
|
||||
Math.max(0, r.top - taskBounds.top),
|
||||
Math.max(0, taskBounds.right - r.right),
|
||||
Math.max(0, taskBounds.bottom - r.bottom));
|
||||
return r;
|
||||
private Rect maxRect(Rect rect1, Rect rect2) {
|
||||
return new Rect(Math.max(rect1.left, rect2.left),
|
||||
Math.max(rect1.top, rect2.top),
|
||||
Math.max(rect1.right, rect2.right),
|
||||
Math.max(rect1.bottom, rect2.bottom));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user