 Chromium Code Reviews
 Chromium Code Reviews Issue 2807433003:
  No pointer captured when the pointer lock is applied  (Closed)
    
  
    Issue 2807433003:
  No pointer captured when the pointer lock is applied  (Closed) 
  | Index: third_party/WebKit/Source/web/WebViewImpl.cpp | 
| diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp | 
| index 32bfe0a1f7bd6404309540f6d3822ce589191ca1..bcc01a642945e63c904b64d838dbec8645db202e 100644 | 
| --- a/third_party/WebKit/Source/web/WebViewImpl.cpp | 
| +++ b/third_party/WebKit/Source/web/WebViewImpl.cpp | 
| @@ -2190,6 +2190,19 @@ WebInputEventResult WebViewImpl::HandleInputEvent( | 
| if (is_pointer_locked && | 
| WebInputEvent::IsMouseEventType(input_event.GetType())) { | 
| + LocalFrame* focusedFrame = FocusedLocalFrameInWidget(); | 
| + if (focusedFrame) { | 
| + WebMouseEvent transformed_event = TransformWebMouseEvent( | 
| + MainFrameImpl()->GetFrameView(), | 
| + static_cast<const WebMouseEvent&>(input_event)); | 
| + Vector<WebMouseEvent> transformed_coalesced_events = | 
| + TransformWebMouseEventVector( | 
| + MainFrameImpl()->GetFrameView(), | 
| + coalesced_event.GetCoalescedEventsPointers()); | 
| + focusedFrame->GetEventHandler().ProcessPendingPointerCapture( | 
| + transformed_event, transformed_coalesced_events); | 
| + } | 
| + | 
| MainFrameImpl()->FrameWidget()->PointerLockMouseEvent(input_event); | 
| 
mustaq
2017/05/19 20:05:33
I believe we need a similar fix before another dir
 
lanwei
2017/05/23 23:11:42
You are right, I moved the code to the WebFrameWid
 | 
| return WebInputEventResult::kHandledSystem; | 
| } | 
| @@ -2559,6 +2572,10 @@ void WebViewImpl::WillCloseLayerTreeView() { | 
| void WebViewImpl::DidAcquirePointerLock() { | 
| if (MainFrameImpl()) | 
| MainFrameImpl()->FrameWidget()->DidAcquirePointerLock(); | 
| + | 
| + LocalFrame* focusedFrame = FocusedLocalFrameInWidget(); | 
| + if (focusedFrame) | 
| + focusedFrame->GetEventHandler().ReleaseMousePointerCapture(); | 
| } | 
| void WebViewImpl::DidNotAcquirePointerLock() { |