From 77aa07338cd84a042b66e430102f004be7d4635c Mon Sep 17 00:00:00 2001 From: Songlin Jiang Date: Wed, 18 Oct 2023 04:04:34 +0200 Subject: [PATCH] Enable haptic feedback when widget hover starts Signed-off-by: Songlin Jiang --- .../common/shared/com/igalia/wolvic/VRBrowserActivity.java | 6 +++--- .../com/igalia/wolvic/input/MotionEventGenerator.java | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/common/shared/com/igalia/wolvic/VRBrowserActivity.java b/app/src/common/shared/com/igalia/wolvic/VRBrowserActivity.java index 2d2a0f679f..81d5acfe2b 100644 --- a/app/src/common/shared/com/igalia/wolvic/VRBrowserActivity.java +++ b/app/src/common/shared/com/igalia/wolvic/VRBrowserActivity.java @@ -1096,14 +1096,14 @@ void handleMotionEvent(final int aHandle, final int aDevice, final boolean aFocu final float y = aY / scale; if (widget == null) { - MotionEventGenerator.dispatch(mRootWidget, aDevice, aFocused, aPressed, x, y); + MotionEventGenerator.dispatch(this, mRootWidget, aDevice, aFocused, aPressed, x, y); } else if (widget.getBorderWidth() > 0) { final int border = widget.getBorderWidth(); - MotionEventGenerator.dispatch(widget, aDevice, aFocused, aPressed, x - border, y - border); + MotionEventGenerator.dispatch(this, widget, aDevice, aFocused, aPressed, x - border, y - border); } else { - MotionEventGenerator.dispatch(widget, aDevice, aFocused, aPressed, x, y); + MotionEventGenerator.dispatch(this, widget, aDevice, aFocused, aPressed, x, y); } }); } diff --git a/app/src/common/shared/com/igalia/wolvic/input/MotionEventGenerator.java b/app/src/common/shared/com/igalia/wolvic/input/MotionEventGenerator.java index 3c67444d7a..83ab1d77aa 100644 --- a/app/src/common/shared/com/igalia/wolvic/input/MotionEventGenerator.java +++ b/app/src/common/shared/com/igalia/wolvic/input/MotionEventGenerator.java @@ -12,6 +12,7 @@ import android.view.MotionEvent; import com.igalia.wolvic.ui.widgets.Widget; +import com.igalia.wolvic.ui.widgets.WidgetManagerDelegate; import com.igalia.wolvic.utils.SystemUtils; import java.util.Arrays; @@ -86,7 +87,7 @@ private static void generateEvent(Widget aWidget, Device aDevice, boolean aFocus event.recycle(); } - public static void dispatch(Widget aWidget, int aDevice, boolean aFocused, boolean aPressed, float aX, float aY) { + public static void dispatch(WidgetManagerDelegate widgetManager, Widget aWidget, int aDevice, boolean aFocused, boolean aPressed, float aX, float aY) { Device device = devices.get(aDevice); if (device == null) { device = new Device(aDevice); @@ -119,6 +120,7 @@ public static void dispatch(Widget aWidget, int aDevice, boolean aFocused, boole } if (aWidget != device.mPreviousWidget && !aPressed) { generateEvent(aWidget, device, aFocused, MotionEvent.ACTION_HOVER_ENTER, true); + widgetManager.triggerHapticFeedback(); device.mHoverStartWidget = aWidget; } if (aPressed && !device.mWasPressed) { @@ -140,6 +142,7 @@ public static void dispatch(Widget aWidget, int aDevice, boolean aFocused, boole if (!isOtherDeviceDown(device.mDevice)) { generateEvent(device.mTouchStartWidget, device, aFocused, MotionEvent.ACTION_UP, false); generateEvent(aWidget, device, aFocused, MotionEvent.ACTION_HOVER_ENTER, true); + widgetManager.triggerHapticFeedback(); device.mHoverStartWidget = aWidget; } device.mTouchStartWidget = null;