Merge "Request scroll capture when the screen rotates." into sc-dev
This commit is contained in:
@@ -554,16 +554,15 @@ public class ScreenshotController {
|
|||||||
// Wait until this window is attached to request because it is
|
// Wait until this window is attached to request because it is
|
||||||
// the reference used to locate the target window (below).
|
// the reference used to locate the target window (below).
|
||||||
withWindowAttached(() -> {
|
withWindowAttached(() -> {
|
||||||
mScrollCaptureClient.setHostWindowToken(mWindow.getDecorView().getWindowToken());
|
requestScrollCapture();
|
||||||
if (mLastScrollCaptureRequest != null) {
|
|
||||||
mLastScrollCaptureRequest.cancel(true);
|
|
||||||
}
|
|
||||||
mLastScrollCaptureRequest = mScrollCaptureClient.request(DEFAULT_DISPLAY);
|
|
||||||
mLastScrollCaptureRequest.addListener(() ->
|
|
||||||
onScrollCaptureResponseReady(mLastScrollCaptureRequest), mMainExecutor);
|
|
||||||
mWindow.peekDecorView().getViewRootImpl().setActivityConfigCallback(
|
mWindow.peekDecorView().getViewRootImpl().setActivityConfigCallback(
|
||||||
(overrideConfig, newDisplayId) -> {
|
(overrideConfig, newDisplayId) -> {
|
||||||
if (mConfigChanges.applyNewConfig(mContext.getResources())) {
|
if (mConfigChanges.applyNewConfig(mContext.getResources())) {
|
||||||
|
// Hide the scroll chip until we know it's available in this orientation
|
||||||
|
mScreenshotView.hideScrollChip();
|
||||||
|
// Delay scroll capture eval a bit to allow the underlying activity
|
||||||
|
// to set up in the new orientation.
|
||||||
|
mScreenshotHandler.postDelayed(this::requestScrollCapture, 150);
|
||||||
updateDisplayCutout();
|
updateDisplayCutout();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -593,6 +592,16 @@ public class ScreenshotController {
|
|||||||
cancelTimeout(); // restarted after animation
|
cancelTimeout(); // restarted after animation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void requestScrollCapture() {
|
||||||
|
mScrollCaptureClient.setHostWindowToken(mWindow.getDecorView().getWindowToken());
|
||||||
|
if (mLastScrollCaptureRequest != null) {
|
||||||
|
mLastScrollCaptureRequest.cancel(true);
|
||||||
|
}
|
||||||
|
mLastScrollCaptureRequest = mScrollCaptureClient.request(DEFAULT_DISPLAY);
|
||||||
|
mLastScrollCaptureRequest.addListener(() ->
|
||||||
|
onScrollCaptureResponseReady(mLastScrollCaptureRequest), mMainExecutor);
|
||||||
|
}
|
||||||
|
|
||||||
private void onScrollCaptureResponseReady(Future<ScrollCaptureResponse> responseFuture) {
|
private void onScrollCaptureResponseReady(Future<ScrollCaptureResponse> responseFuture) {
|
||||||
try {
|
try {
|
||||||
if (mLastScrollCaptureResponse != null) {
|
if (mLastScrollCaptureResponse != null) {
|
||||||
|
|||||||
@@ -204,6 +204,10 @@ public class ScreenshotView extends FrameLayout implements
|
|||||||
mSwipeDismissHandler = new SwipeDismissHandler();
|
mSwipeDismissHandler = new SwipeDismissHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void hideScrollChip() {
|
||||||
|
mScrollChip.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called to display the scroll action chip when support is detected.
|
* Called to display the scroll action chip when support is detected.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user