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

Commit 131e0b1d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Skipping touch dispatch when it happens withing the window gesture...

Merge "Skipping touch dispatch when it happens withing the window gesture region" into ub-launcher3-master
parents 93fbeb17 745df7c4
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -17,12 +17,18 @@ package com.android.quickstep.fallback;

import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Insets;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewDebug;
import android.view.WindowInsets;

import com.android.launcher3.BaseActivity;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.util.Themes;
import com.android.launcher3.util.TouchController;
import com.android.launcher3.views.BaseDragLayer;
@@ -33,6 +39,9 @@ public class RecentsRootView extends BaseDragLayer<RecentsActivity> {
    private static final int MIN_SIZE = 10;
    private final RecentsActivity mActivity;

    @ViewDebug.ExportedProperty(category = "launcher")
    private final RectF mTouchExcludeRegion = new RectF();

    private final Point mLastKnownSize = new Point(MIN_SIZE, MIN_SIZE);

    public RecentsRootView(Context context, AttributeSet attrs) {
@@ -88,4 +97,29 @@ public class RecentsRootView extends BaseDragLayer<RecentsActivity> {
        mActivity.getDeviceProfile().updateInsets(mInsets);
        super.setInsets(mInsets);
    }

    @Override
    public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
        if (Utilities.ATLEAST_Q) {
            Insets gestureInsets = insets.getMandatorySystemGestureInsets();
            mTouchExcludeRegion.set(gestureInsets.left, gestureInsets.top,
                    gestureInsets.right, gestureInsets.bottom);
        }
        return super.dispatchApplyWindowInsets(insets);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            float x = ev.getX();
            float y = ev.getY();
            if (y < mTouchExcludeRegion.top
                    || x < mTouchExcludeRegion.left
                    || x > (getWidth() - mTouchExcludeRegion.right)
                    || y > (getHeight() - mTouchExcludeRegion.bottom)) {
                return false;
            }
        }
        return super.dispatchTouchEvent(ev);
    }
}
 No newline at end of file
+32 −0
Original line number Diff line number Diff line
@@ -8,11 +8,15 @@ import android.app.ActivityManager;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Insets;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewDebug;
import android.view.WindowInsets;

public class LauncherRootView extends InsettableFrameLayout {

@@ -23,6 +27,9 @@ public class LauncherRootView extends InsettableFrameLayout {
    @ViewDebug.ExportedProperty(category = "launcher")
    private final Rect mConsumedInsets = new Rect();

    @ViewDebug.ExportedProperty(category = "launcher")
    private final RectF mTouchExcludeRegion = new RectF();

    private View mAlignedView;
    private WindowStateListener mWindowStateListener;

@@ -145,6 +152,31 @@ public class LauncherRootView extends InsettableFrameLayout {
        }
    }

    @Override
    public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
        if (Utilities.ATLEAST_Q) {
            Insets gestureInsets = insets.getMandatorySystemGestureInsets();
            mTouchExcludeRegion.set(gestureInsets.left, gestureInsets.top,
                    gestureInsets.right, gestureInsets.bottom);
        }
        return super.dispatchApplyWindowInsets(insets);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            float x = ev.getX();
            float y = ev.getY();
            if (y < mTouchExcludeRegion.top
                    || x < mTouchExcludeRegion.left
                    || x > (getWidth() - mTouchExcludeRegion.right)
                    || y > (getHeight() - mTouchExcludeRegion.bottom)) {
                return false;
            }
        }
        return super.dispatchTouchEvent(ev);
    }

    public interface WindowStateListener {

        void onWindowFocusChanged(boolean hasFocus);