Fix split dim when IME shown

ImePositionProcessor didn't handle dim if it didn't not offset
layout, but when landscape, the layout will not offset. It cause
dim value didn't apply.

Fix this by checking both offset and dim value.

Fix: 200757897
Test: manual
Test: pass existing tests
Change-Id: I709b69c8e2d102d0e8237998b26f45c70805bf23
This commit is contained in:
Tony Huang
2021-09-23 15:30:07 +08:00
parent 9fbadb5a3b
commit 13e9fc1916

View File

@@ -776,26 +776,31 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
boolean adjustSurfaceLayoutForIme(SurfaceControl.Transaction t,
SurfaceControl dividerLeash, SurfaceControl leash1, SurfaceControl leash2,
SurfaceControl dimLayer1, SurfaceControl dimLayer2) {
if (mYOffsetForIme == 0) return false;
final boolean showDim = mDimValue1 > 0.001f || mDimValue2 > 0.001f;
boolean adjusted = false;
if (mYOffsetForIme != 0) {
if (dividerLeash != null) {
mTempRect.set(mDividerBounds);
mTempRect.offset(0, mYOffsetForIme);
t.setPosition(dividerLeash, mTempRect.left, mTempRect.top);
}
if (dividerLeash != null) {
mTempRect.set(mDividerBounds);
mTempRect.set(mBounds1);
mTempRect.offset(0, mYOffsetForIme);
t.setPosition(dividerLeash, mTempRect.left, mTempRect.top);
t.setPosition(leash1, mTempRect.left, mTempRect.top);
mTempRect.set(mBounds2);
mTempRect.offset(0, mYOffsetForIme);
t.setPosition(leash2, mTempRect.left, mTempRect.top);
adjusted = true;
}
mTempRect.set(mBounds1);
mTempRect.offset(0, mYOffsetForIme);
t.setPosition(leash1, mTempRect.left, mTempRect.top);
mTempRect.set(mBounds2);
mTempRect.offset(0, mYOffsetForIme);
t.setPosition(leash2, mTempRect.left, mTempRect.top);
t.setAlpha(dimLayer1, mDimValue1).setVisibility(dimLayer1, mDimValue1 > 0.001f);
t.setAlpha(dimLayer2, mDimValue2).setVisibility(dimLayer2, mDimValue2 > 0.001f);
return true;
if (showDim) {
t.setAlpha(dimLayer1, mDimValue1).setVisibility(dimLayer1, mDimValue1 > 0.001f);
t.setAlpha(dimLayer2, mDimValue2).setVisibility(dimLayer2, mDimValue2 > 0.001f);
adjusted = true;
}
return adjusted;
}
}
}