Use the copy constructor to create simulated sources

In this way, we don't need to modify the code in createSimulatedSource
when there is a new field of InsetsSource.

This fixes a regression since 244e960063

Fix: 285080829
Test: Open Settings from portrait while holding device in landscape, and
      see if the nav bar area is transparent in gesture nav mode.
Change-Id: I8288f9d9bf6f2f28a71448cc35727c1c3955bad7
This commit is contained in:
Tiger
2023-05-31 16:54:26 +08:00
committed by Tiger Huang
parent 878b61b063
commit 7bf6dc611a

View File

@@ -272,15 +272,17 @@ class InsetsSourceProvider {
/** @return A new source computed by the specified window frame in the given display frames. */
InsetsSource createSimulatedSource(DisplayFrames displayFrames, Rect frame) {
// Don't copy visible frame because it might not be calculated in the provided display
// frames and it is not significant for this usage.
final InsetsSource source = new InsetsSource(mSource.getId(), mSource.getType());
source.setVisible(mSource.isVisible());
final InsetsSource source = new InsetsSource(mSource);
mTmpRect.set(frame);
if (mFrameProvider != null) {
mFrameProvider.apply(displayFrames, mWindowContainer, mTmpRect);
}
source.setFrame(mTmpRect);
// Don't copy visible frame because it might not be calculated in the provided display
// frames and it is not significant for this usage.
source.setVisibleFrame(null);
return source;
}