Merge "Screenshots broken for activities with dialog themes" into pi-dev
This commit is contained in:
@@ -1728,6 +1728,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
|
|||||||
frame.set(win.mContainingFrame);
|
frame.set(win.mContainingFrame);
|
||||||
}
|
}
|
||||||
surfaceInsets = win.getAttrs().surfaceInsets;
|
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);
|
insets.set(win.mContentInsets);
|
||||||
stableInsets.set(win.mStableInsets);
|
stableInsets.set(win.mStableInsets);
|
||||||
}
|
}
|
||||||
@@ -2120,4 +2122,12 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
|
|||||||
}
|
}
|
||||||
return stringName + ((mIsExiting) ? " mIsExiting=" : "");
|
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);
|
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.
|
* Hides the letterbox.
|
||||||
*
|
*
|
||||||
@@ -141,5 +152,13 @@ public class Letterbox {
|
|||||||
mSurface = null;
|
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) {
|
private Rect getInsetsFromTaskBounds(WindowState state, Task task) {
|
||||||
final Rect r = new Rect();
|
// XXX(b/72757033): These are insets relative to the window frame, but we're really
|
||||||
r.set(state.getContentFrameLw());
|
// interested in the insets relative to the task bounds.
|
||||||
r.intersectUnchecked(state.getStableFrameLw());
|
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),
|
private Rect maxRect(Rect rect1, Rect rect2) {
|
||||||
Math.max(0, r.top - taskBounds.top),
|
return new Rect(Math.max(rect1.left, rect2.left),
|
||||||
Math.max(0, taskBounds.right - r.right),
|
Math.max(rect1.top, rect2.top),
|
||||||
Math.max(0, taskBounds.bottom - r.bottom));
|
Math.max(rect1.right, rect2.right),
|
||||||
return r;
|
Math.max(rect1.bottom, rect2.bottom));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user