Reviewed by Dan Bernstein.
WebKit2 doesn't hide mouse pointer on keypress
https://bugs.webkit.org/show_bug.cgi?id=53821
rdar://problem/
8630895
* UIProcess/PageClient.h: Renamed didNotHandleKeyEvent to
doneWithKeyEvent and added a bool wasEventHandled argument.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didReceiveEvent): Changed code to call
doneWithKeyEvent and call even if event was handled.
* UIProcess/API/mac/PageClientImpl.h: Updated for above change.
* UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::doneWithKeyEvent): Ditto. But also
call [NSCursor setHiddenUntilMouseMoves:YES] when a key down
event was handled. This matches what -[WebHTMLView keyDown:] does.
* UIProcess/API/qt/qwkpage.cpp:
(QWKPagePrivate::doneWithKeyEvent): Ditto.
* UIProcess/API/qt/qwkpage_p.h: Ditto.
* UIProcess/win/WebView.cpp:
(WebKit::WebView::doneWithKeyEvent): Ditto.
* UIProcess/win/WebView.h: Ditto.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77694
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-02-04 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ WebKit2 doesn't hide mouse pointer on keypress
+ https://bugs.webkit.org/show_bug.cgi?id=53821
+ rdar://problem/8630895
+
+ * UIProcess/PageClient.h: Renamed didNotHandleKeyEvent to
+ doneWithKeyEvent and added a bool wasEventHandled argument.
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::didReceiveEvent): Changed code to call
+ doneWithKeyEvent and call even if event was handled.
+
+ * UIProcess/API/mac/PageClientImpl.h: Updated for above change.
+ * UIProcess/API/mac/PageClientImpl.mm:
+ (WebKit::PageClientImpl::doneWithKeyEvent): Ditto. But also
+ call [NSCursor setHiddenUntilMouseMoves:YES] when a key down
+ event was handled. This matches what -[WebHTMLView keyDown:] does.
+ * UIProcess/API/qt/qwkpage.cpp:
+ (QWKPagePrivate::doneWithKeyEvent): Ditto.
+ * UIProcess/API/qt/qwkpage_p.h: Ditto.
+ * UIProcess/win/WebView.cpp:
+ (WebKit::WebView::doneWithKeyEvent): Ditto.
+ * UIProcess/win/WebView.h: Ditto.
+
2011-02-04 Steve Falkenburg <sfalken@apple.com>
Reviewed by Adam Roben.
virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&);
virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&);
- virtual void didNotHandleKeyEvent(const NativeWebKeyboardEvent&);
+ virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled);
virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*);
virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*);
return [m_wkView _convertToUserSpace:rect];
}
-void PageClientImpl::didNotHandleKeyEvent(const NativeWebKeyboardEvent& event)
+void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool wasEventHandled)
{
NSEvent* nativeEvent = event.nativeEvent();
- if ([nativeEvent type] == NSKeyDown) {
+ if ([nativeEvent type] != NSKeyDown)
+ return;
+ if (wasEventHandled)
+ [NSCursor setHiddenUntilMouseMoves:YES];
+ else {
[m_wkView _setEventBeingResent:nativeEvent];
[[NSApplication sharedApplication] sendEvent:nativeEvent];
}
{
}
-void QWKPagePrivate::didNotHandleKeyEvent(const NativeWebKeyboardEvent&)
+void QWKPagePrivate::doneWithKeyEvent(const NativeWebKeyboardEvent&, bool)
{
}
virtual void clearAllEditCommands();
virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&);
virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&);
- virtual void didNotHandleKeyEvent(const WebKit::NativeWebKeyboardEvent&);
+ virtual void doneWithKeyEvent(const WebKit::NativeWebKeyboardEvent&, bool wasEventHandled);
virtual void selectionChanged(bool, bool, bool, bool);
virtual PassRefPtr<WebKit::WebPopupMenuProxy> createPopupMenuProxy(WebKit::WebPageProxy*);
virtual PassRefPtr<WebKit::WebContextMenuProxy> createContextMenuProxy(WebKit::WebPageProxy*);
virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&) = 0;
virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&) = 0;
- virtual void didNotHandleKeyEvent(const NativeWebKeyboardEvent&) = 0;
+ virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled) = 0;
virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*) = 0;
virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*) = 0;
m_keyEventQueue.removeFirst();
+ m_pageClient->doneWithKeyEvent(event, handled);
+
if (handled)
break;
- m_pageClient->didNotHandleKeyEvent(event);
m_uiClient.didNotHandleKeyEvent(this, event);
break;
}
return false;
}
-void WebView::didNotHandleKeyEvent(const NativeWebKeyboardEvent& event)
+void WebView::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool wasEventHandled)
{
// Calling ::DefWindowProcW will ensure that pressing the Alt key will generate a WM_SYSCOMMAND
// event, e.g. See <http://webkit.org/b/47671>.
- ::DefWindowProcW(event.nativeEvent()->hwnd, event.nativeEvent()->message, event.nativeEvent()->wParam, event.nativeEvent()->lParam);
+ if (!wasEventHandled)
+ ::DefWindowProcW(event.nativeEvent()->hwnd, event.nativeEvent()->message, event.nativeEvent()->wParam, event.nativeEvent()->lParam);
}
PassRefPtr<WebPopupMenuProxy> WebView::createPopupMenuProxy(WebPageProxy* page)
virtual void setEditCommandState(const WTF::String&, bool, int);
virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&);
virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&);
- virtual void didNotHandleKeyEvent(const NativeWebKeyboardEvent&);
+ virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled);
virtual void compositionSelectionChanged(bool);
virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*);
virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*);