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

Commit 711189df authored by Winson Chung's avatar Winson Chung
Browse files

Fix gesture insets issue for IMEs

- Setting the override frame for the gesture insets sources prevents
  the insets from being calculated correctly for the IME window
- Update the set of provided insets based on the current nav mode
  so that we don't report gesture insets in button nav

Bug: 265614886
Test: Dump IME window insets for button/gesture nav
Change-Id: I22f9d09a66b50d6e2fb5002af19058657a06404d
parent f86b574e
Loading
Loading
Loading
Loading
+22 −13
Original line number Diff line number Diff line
@@ -70,20 +70,9 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas
    fun init(controllers: TaskbarControllers) {
        this.controllers = controllers
        windowLayoutParams = context.windowLayoutParams
        windowLayoutParams.providedInsets =
            arrayOf(
                InsetsFrameProvider(insetsOwner, 0, navigationBars()),
                InsetsFrameProvider(insetsOwner, 0, tappableElement()),
                InsetsFrameProvider(insetsOwner, 0, mandatorySystemGestures()),
                InsetsFrameProvider(insetsOwner, INDEX_LEFT, systemGestures())
                    .setSource(SOURCE_DISPLAY),
                InsetsFrameProvider(insetsOwner, INDEX_RIGHT, systemGestures())
                    .setSource(SOURCE_DISPLAY)
            )

        windowLayoutParams.insetsRoundedCornerFrame = true
        onTaskbarWindowHeightOrInsetsChanged()

        windowLayoutParams.insetsRoundedCornerFrame = true
        context.addOnDeviceProfileChangeListener(deviceProfileChangeListener)
        gestureNavSettingsObserver.registerForCallingUser()
    }
@@ -94,6 +83,25 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas
    }

    fun onTaskbarWindowHeightOrInsetsChanged() {
        if (context.isGestureNav) {
            windowLayoutParams.providedInsets =
                    arrayOf(
                            InsetsFrameProvider(insetsOwner, 0, navigationBars()),
                            InsetsFrameProvider(insetsOwner, 0, tappableElement()),
                            InsetsFrameProvider(insetsOwner, 0, mandatorySystemGestures()),
                            InsetsFrameProvider(insetsOwner, INDEX_LEFT, systemGestures())
                                    .setSource(SOURCE_DISPLAY),
                            InsetsFrameProvider(insetsOwner, INDEX_RIGHT, systemGestures())
                                    .setSource(SOURCE_DISPLAY)
                    )
        } else {
            windowLayoutParams.providedInsets =
                    arrayOf(
                            InsetsFrameProvider(insetsOwner, 0, navigationBars()),
                            InsetsFrameProvider(insetsOwner, 0, tappableElement())
                    )
        }

        val touchableHeight = controllers.taskbarStashController.touchableHeight
        touchableRegion.set(
            0,
@@ -146,7 +154,8 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas
        for (provider in windowLayoutParams.providedInsets) {
            if (context.isGestureNav && provider.type == tappableElement()) {
                provider.insetsSizeOverrides = insetsSizeOverrideForGestureNavTappableElement
            } else {
            } else if (provider.type != systemGestures()) {
                // We only override insets at the bottom of the screen
                provider.insetsSizeOverrides = insetsSizeOverride
            }
        }