Changeset 245699 in webkit
- Timestamp:
- May 23, 2019, 11:13:56 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released-expected.txt (added)
-
LayoutTests/pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/page/PointerCaptureController.cpp (modified) (1 diff)
-
Source/WebCore/page/PointerCaptureController.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r245695 r245699 1 2019-05-23 Antoine Quint <graouts@apple.com> 2 3 [Pointer Events] Compatibility mouse events can only be prevented while the pointer is pressed 4 https://bugs.webkit.org/show_bug.cgi?id=198178 5 6 Reviewed by Dean Jackson. 7 8 Add a test that listens "mousemove" events and checks it is not dispatched after preventDefault() is called when handling 9 "pointerdown" but it is dispatched after releasing the mouse pointer and moving it again. 10 11 * pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released-expected.txt: Added. 12 * pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released.html: Added. 13 1 14 2019-05-23 Antoine Quint <graouts@apple.com> 2 15 -
trunk/Source/WebCore/ChangeLog
r245695 r245699 1 2019-05-23 Antoine Quint <graouts@apple.com> 2 3 [Pointer Events] Compatibility mouse events can only be prevented while the pointer is pressed 4 https://bugs.webkit.org/show_bug.cgi?id=198178 5 6 Reviewed by Dean Jackson. 7 8 Test: pointerevents/mouse/compatibility-mouse-events-prevention-mouse-released.html 9 10 The Pointer Events spec, in https://www.w3.org/TR/pointerevents/#compatibility-mapping-with-mouse-events, says that "Mouse events 11 can only be prevented when the pointer is down. Hovering pointers (e.g. a mouse with no buttons pressed) cannot have their mouse 12 events prevented." We now track whether the pointer is pressed and clear the preventsCompatibilityMouseEvents when the pointer is 13 moved and it is not pressed. 14 15 * page/PointerCaptureController.cpp: 16 (WebCore::PointerCaptureController::pointerEventWasDispatched): 17 * page/PointerCaptureController.h: 18 1 19 2019-05-23 Antoine Quint <graouts@apple.com> 2 20 -
trunk/Source/WebCore/page/PointerCaptureController.cpp
r245639 r245699 265 265 // Pointer Capture steps to fire lostpointercapture if necessary. 266 266 // https://w3c.github.io/pointerevents/#implicit-release-of-pointer-capture 267 if (event.type() == eventNames().pointerupEvent) 267 if (event.type() == eventNames().pointerupEvent) { 268 268 capturingData.pendingTargetOverride = nullptr; 269 capturingData.pointerIsPressed = false; 270 } 271 272 // If a mouse pointer has moved while it isn't pressed, make sure we reset the preventsCompatibilityMouseEvents flag since 273 // we could otherwise prevent compatibility mouse events while those are only supposed to be prevented while the pointer is pressed. 274 if (event.type() == eventNames().pointermoveEvent && capturingData.pointerType == PointerEvent::mousePointerType() && !capturingData.pointerIsPressed) 275 capturingData.preventsCompatibilityMouseEvents = false; 269 276 270 277 // If the pointer event dispatched was pointerdown and the event was canceled, then set the PREVENT MOUSE EVENT flag for this pointerType. 271 278 // https://www.w3.org/TR/pointerevents/#mapping-for-devices-that-support-hover 272 if (event.type() == eventNames().pointerdownEvent) 279 if (event.type() == eventNames().pointerdownEvent) { 273 280 capturingData.preventsCompatibilityMouseEvents = event.defaultPrevented(); 281 capturingData.pointerIsPressed = true; 282 } 274 283 } 275 284 -
trunk/Source/WebCore/page/PointerCaptureController.h
r245639 r245699 67 67 bool isPrimary { false }; 68 68 bool preventsCompatibilityMouseEvents { false }; 69 bool pointerIsPressed { false }; 69 70 }; 70 71
Note:
See TracChangeset
for help on using the changeset viewer.