diff options
6 files changed, 35 insertions, 10 deletions
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 023fbaddfb83..bb737ca4eff1 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -47,6 +47,9 @@ <dimen name="navigation_bar_height_landscape">48dp</dimen> <!-- Width of the navigation bar when it is placed vertically on the screen --> <dimen name="navigation_bar_width">48dp</dimen> + <!-- How much we expand the touchable region of the status bar below the notch to catch touches + that just start below the notch. --> + <dimen name="display_cutout_touchable_region_size">12dp</dimen> <!-- EXPERIMENT BEGIN --> <!-- Height of the bottom navigation bar frame; this is different than navigation_bar_height diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index ae54a6aa4110..cedb3e929131 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1745,6 +1745,7 @@ <java-symbol type="dimen" name="navigation_bar_height_landscape_car_mode" /> <java-symbol type="dimen" name="navigation_bar_width_car_mode" /> <java-symbol type="dimen" name="status_bar_height" /> + <java-symbol type="dimen" name="display_cutout_touchable_region_size" /> <java-symbol type="dimen" name="quick_qs_offset_height" /> <java-symbol type="dimen" name="quick_qs_total_height" /> <java-symbol type="drawable" name="ic_jog_dial_sound_off" /> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 1da1405f469a..67d506289c9d 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -977,10 +977,6 @@ <!-- How much into a DisplayCutout's bounds we can go, on each side --> <dimen name="display_cutout_margin_consumption">0px</dimen> - <!-- How much we expand the touchable region of the status bar below the notch to catch touches - that just start below the notch. --> - <dimen name="display_cutout_touchable_region_size">12dp</dimen> - <!-- Padding below Ongoing App Ops dialog title --> <dimen name="ongoing_appops_dialog_sep">16dp</dimen> <!--Padding around text items in Ongoing App Ops dialog --> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java index 9844d8e5a67a..b7a154d67c10 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java @@ -140,7 +140,7 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable, mHeadsUpInset = mStatusBarHeight + resources.getDimensionPixelSize( R.dimen.heads_up_status_bar_padding); mDisplayCutoutTouchableRegionSize = resources.getDimensionPixelSize( - R.dimen.display_cutout_touchable_region_size); + com.android.internal.R.dimen.display_cutout_touchable_region_size); } @Override diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 6605f3c605ed..02321a6e55a4 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -2541,6 +2541,7 @@ public class DisplayPolicy { */ public void onOverlayChangedLw() { onConfigurationChanged(); + mSystemGestures.onConfigurationChanged(); } /** diff --git a/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java b/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java index bd4e542033c5..35afaedb0b43 100644 --- a/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java +++ b/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java @@ -17,9 +17,13 @@ package com.android.server.wm; import android.content.Context; +import android.graphics.Rect; +import android.hardware.display.DisplayManagerGlobal; import android.os.Handler; import android.os.SystemClock; import android.util.Slog; +import android.view.Display; +import android.view.DisplayCutout; import android.view.GestureDetector; import android.view.InputDevice; import android.view.MotionEvent; @@ -46,8 +50,9 @@ class SystemGesturesPointerEventListener implements PointerEventListener { private final Context mContext; private final Handler mHandler; - private final int mSwipeStartThreshold; - private final int mSwipeDistanceThreshold; + private int mDisplayCutoutTouchableRegionSize; + private int mSwipeStartThreshold; + private int mSwipeDistanceThreshold; private final Callbacks mCallbacks; private final int[] mDownPointerId = new int[MAX_TRACKED_POINTERS]; private final float[] mDownX = new float[MAX_TRACKED_POINTERS]; @@ -65,14 +70,33 @@ class SystemGesturesPointerEventListener implements PointerEventListener { private long mLastFlingTime; SystemGesturesPointerEventListener(Context context, Handler handler, Callbacks callbacks) { - mContext = context; + mContext = checkNull("context", context); mHandler = handler; mCallbacks = checkNull("callbacks", callbacks); - mSwipeStartThreshold = checkNull("context", context).getResources() + + onConfigurationChanged(); + } + + void onConfigurationChanged() { + mSwipeStartThreshold = mContext.getResources() .getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height); + + final Display display = DisplayManagerGlobal.getInstance() + .getRealDisplay(Display.DEFAULT_DISPLAY); + final DisplayCutout displayCutout = display.getCutout(); + if (displayCutout != null) { + final Rect bounds = displayCutout.getBoundingRectTop(); + if (!bounds.isEmpty()) { + // Expand swipe start threshold such that we can catch touches that just start below + // the notch area + mDisplayCutoutTouchableRegionSize = mContext.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.display_cutout_touchable_region_size); + mSwipeStartThreshold += mDisplayCutoutTouchableRegionSize; + } + } mSwipeDistanceThreshold = mSwipeStartThreshold; if (DEBUG) Slog.d(TAG, "mSwipeStartThreshold=" + mSwipeStartThreshold - + " mSwipeDistanceThreshold=" + mSwipeDistanceThreshold); + + " mSwipeDistanceThreshold=" + mSwipeDistanceThreshold); } private static <T> T checkNull(String name, T arg) { |