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

Commit f0c633bc authored by Thales Lima's avatar Thales Lima
Browse files

Take account of IME insets

Fix: 233159032
Test: manual
Change-Id: I2a23c13f7b2bcd8b0c758140dd1fdd5bb800f3f1
parent 0f8bbef7
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -22,13 +22,11 @@ import static android.view.MotionEvent.ACTION_UP;

import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs;

import android.annotation.TargetApi;
import android.app.WallpaperManager;
import android.content.Context;
import android.graphics.Insets;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Property;
import android.view.MotionEvent;
@@ -550,18 +548,24 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
    }

    @Override
    @TargetApi(Build.VERSION_CODES.Q)
    public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
        if (Utilities.ATLEAST_Q) {
            Insets gestureInsets = insets.getMandatorySystemGestureInsets();
            int gestureInsetBottom = gestureInsets.bottom;
            Insets imeInset = Utilities.ATLEAST_R
                    ? insets.getInsets(WindowInsets.Type.ime())
                    : Insets.NONE;
            DeviceProfile dp = mActivity.getDeviceProfile();
            if (dp.isTaskbarPresent) {
                // Ignore taskbar gesture insets to avoid interfering with TouchControllers.
                gestureInsetBottom = Math.max(0, gestureInsetBottom - dp.taskbarSize);
            }
            mSystemGestureRegion.set(gestureInsets.left, gestureInsets.top,
                    gestureInsets.right, gestureInsetBottom);
            mSystemGestureRegion.set(
                    Math.max(gestureInsets.left, imeInset.left),
                    Math.max(gestureInsets.top, imeInset.top),
                    Math.max(gestureInsets.right, imeInset.right),
                    Math.max(gestureInsetBottom, imeInset.bottom)
            );
        }
        return super.dispatchApplyWindowInsets(insets);
    }