| Index: sky/engine/core/frame/NewEventHandler.cpp
|
| diff --git a/sky/engine/core/frame/NewEventHandler.cpp b/sky/engine/core/frame/NewEventHandler.cpp
|
| index 9154289fa31bbe3ce52aa320a15e1a261ee9ae11..a7e6c26790e3f87a28f8dbddbe4da139e384c38e 100644
|
| --- a/sky/engine/core/frame/NewEventHandler.cpp
|
| +++ b/sky/engine/core/frame/NewEventHandler.cpp
|
| @@ -121,7 +121,7 @@ bool NewEventHandler::dispatchClickEvent(Node& capturingTarget, const WebPointer
|
| void NewEventHandler::updateSelectionForPointerDown(const HitTestResult& hitTestResult, const WebPointerEvent& event)
|
| {
|
| Node* innerNode = hitTestResult.innerNode();
|
| - if (!innerNode->renderer())
|
| + if (!innerNode || !innerNode->renderer())
|
| return;
|
| if (Position::nodeIsUserSelectNone(innerNode))
|
| return;
|
| @@ -191,14 +191,14 @@ bool NewEventHandler::handlePointerDownEvent(const WebPointerEvent& event)
|
| // pointer ID, but for mice, we don't get a pointer cancel when you
|
| // drag outside the window frame on Linux. For now, send the pointer
|
| // cancel at this point.
|
| - if (event.kind == WebPointerEvent::Mouse
|
| - && m_stateForPointer.find(event.pointer) != m_stateForPointer.end()) {
|
| + bool alreadyDown = m_stateForPointer.find(event.pointer) != m_stateForPointer.end();
|
| + if (event.kind == WebPointerEvent::Mouse && alreadyDown) {
|
| WebPointerEvent fakeCancel = event;
|
| fakeCancel.type = WebInputEvent::PointerCancel;
|
| handlePointerCancelEvent(fakeCancel);
|
| }
|
|
|
| - ASSERT(m_stateForPointer.find(event.pointer) == m_stateForPointer.end());
|
| + DCHECK(!alreadyDown) << "Pointer id " << event.pointer << "already down!";
|
| HitTestResult hitTestResult = performHitTest(positionForEvent(event));
|
| RefPtr<Node> target = targetForHitTestResult(hitTestResult);
|
| if (!target)
|
|
|