Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2e8e229 authored by Yunfan Chen's avatar Yunfan Chen
Browse files

[DO NOT MERGE] Force extra nav bar provide side gesture insets

This is a patch to fix the missing gesture insets issue when there's a
task bar and no navigation bar on the display. It will try to add the
gesture navigation insets when a window providing navigation bar insets
is added and there's no window with TYPE_NAVIGATION_BAR.

The logic will only be applied when the insets is not flexible. Due to
the removal of the old hard-coded logic in the later version, this patch
should not be merged into the next version.

The final fix will not be on tm-dev to keep tm-dev stable. Cherry-pick the hard-coded solution to avoid failures related to IME.

Bug: 231959399
Bug: 229805460
Bug: 232044523
Test: android.widget.cts.SeekBarTest#testSetOnSeekBarChangeListener
Change-Id: I080df3547361aef1aa259dd2b3dc9bdb860a0193
(cherry picked from commit 1921f8c1)
parent 53058521
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -1231,6 +1231,29 @@ public class DisplayPolicy {
                                    }
                                    inOutFrame.inset(win.mGivenContentInsets);
                                } : null, imeFrameProvider);
                        if (mNavigationBar == null && (insetsType == ITYPE_NAVIGATION_BAR
                                || insetsType == ITYPE_EXTRA_NAVIGATION_BAR)) {
                            mDisplayContent.setInsetProvider(ITYPE_LEFT_GESTURES, win,
                                    (displayFrames, windowState, inOutFrame) -> {
                                final int leftSafeInset =
                                        Math.max(displayFrames.mDisplayCutoutSafe.left,0);
                                        inOutFrame.left = 0;
                                        inOutFrame.top = 0;
                                        inOutFrame.bottom = displayFrames.mDisplayHeight;
                                        inOutFrame.right =
                                                leftSafeInset + mLeftGestureInset;
                                    });
                            mDisplayContent.setInsetProvider(ITYPE_RIGHT_GESTURES, win,
                                    (displayFrames, windowState, inOutFrame) -> {
                                        final int rightSafeInset =
                                                Math.min(displayFrames.mDisplayCutoutSafe.right,
                                                        displayFrames.mUnrestricted.right);
                                        inOutFrame.left = rightSafeInset - mRightGestureInset;
                                        inOutFrame.top = 0;
                                        inOutFrame.bottom = displayFrames.mDisplayHeight;
                                        inOutFrame.right = displayFrames.mDisplayWidth;
                                    });
                        }
                        mInsetsSourceWindowsExceptIme.add(win);
                    }
                }