summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2019-04-03 15:25:00 -0700
committerSunny Goyal <sunnygoyal@google.com>2019-04-03 15:26:18 -0700
commit745df7c4836a59e61c9718681d8d032c31b3ee47 (patch)
treedb7a3c401c4a8487f61239e56ea3722f59e855a4 /src
parent1f95993e137676150ba82012ed09e26007726c65 (diff)
downloadandroid_packages_apps_Trebuchet-745df7c4836a59e61c9718681d8d032c31b3ee47.tar.gz
android_packages_apps_Trebuchet-745df7c4836a59e61c9718681d8d032c31b3ee47.tar.bz2
android_packages_apps_Trebuchet-745df7c4836a59e61c9718681d8d032c31b3ee47.zip
Skipping touch dispatch when it happens withing the window gesture region
> Those events are already proxied through the TouchInteractionService Change-Id: If06483f208cbd462fdfdf01abba27bd937b766e7
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/LauncherRootView.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/com/android/launcher3/LauncherRootView.java b/src/com/android/launcher3/LauncherRootView.java
index 9f6e5cd43..e738eb7af 100644
--- a/src/com/android/launcher3/LauncherRootView.java
+++ b/src/com/android/launcher3/LauncherRootView.java
@@ -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);