Skip to content

Commit

Permalink
Exit other devices hover when clicking with another device (#3001)
Browse files Browse the repository at this point in the history
  • Loading branch information
keianhzo committed Mar 19, 2020
1 parent 2b534a4 commit a79c84d
Showing 1 changed file with 11 additions and 0 deletions.
Expand Up @@ -22,6 +22,7 @@ static class Device {
int mDevice;
Widget mPreviousWidget = null;
Widget mTouchStartWidget = null;
Widget mHoverStartWidget = null;
boolean mWasPressed;
long mDownTime;
MotionEvent.PointerProperties mProperties[];
Expand Down Expand Up @@ -108,27 +109,37 @@ public static void dispatch(Widget aWidget, int aDevice, boolean aFocused, boole
}
generateEvent(device.mPreviousWidget, device, aFocused, MotionEvent.ACTION_HOVER_EXIT, true, device.mMouseOutCoords);
device.mPreviousWidget = null;
device.mHoverStartWidget = null;
}
if (aWidget == null) {
device.mPreviousWidget = null;
device.mHoverStartWidget = null;
return;
}
if (aWidget != device.mPreviousWidget && !aPressed) {
generateEvent(aWidget, device, aFocused, MotionEvent.ACTION_HOVER_ENTER, true);
device.mHoverStartWidget = aWidget;
}
if (aPressed && !device.mWasPressed) {
device.mDownTime = SystemClock.uptimeMillis();
device.mWasPressed = true;
if (!isOtherDeviceDown(device.mDevice)) {
generateEvent(aWidget, device, aFocused, MotionEvent.ACTION_HOVER_EXIT, true);
generateEvent(aWidget, device, aFocused, MotionEvent.ACTION_DOWN, false);
device.mHoverStartWidget = null;
}
for (int i=0; i<devices.size(); i++) {
if (devices.get(i) != device && devices.get(i).mHoverStartWidget != null) {
generateEvent(devices.get(i).mHoverStartWidget, devices.get(i), aFocused, MotionEvent.ACTION_HOVER_EXIT, true);
}
}
device.mTouchStartWidget = aWidget;
} else if (!aPressed && device.mWasPressed) {
device.mWasPressed = false;
if (!isOtherDeviceDown(device.mDevice)) {
generateEvent(device.mTouchStartWidget, device, aFocused, MotionEvent.ACTION_UP, false);
generateEvent(aWidget, device, aFocused, MotionEvent.ACTION_HOVER_ENTER, true);
device.mHoverStartWidget = aWidget;
}
device.mTouchStartWidget = null;
} else if (moving && aPressed) {
Expand Down

0 comments on commit a79c84d

Please sign in to comment.