Changeset 91937 in webkit
- Timestamp:
- Jul 28, 2011 10:24:47 AM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r91935 r91937 1 2011-07-28 Ravi Phaneendra Kasibhatla <ravi.kasibhatla@motorola.com> 2 3 Pass the key_press_event or key_release_event to parent widget when it is not handled by Web Process. 4 (https://bugs.webkit.org/show_bug.cgi?id=64790) 5 6 Reviewed by Martin Robinson. 7 8 * Shared/NativeWebKeyboardEvent.h: 9 (WebKit::NativeWebKeyboardEvent::nativeEvent): Return a GdkEvent* instead of const GdkEvent* (non-const). 10 * UIProcess/API/gtk/PageClientImpl.cpp: 11 (WebKit::PageClientImpl::doneWithKeyEvent): Implemented for GTK port. Sets flag if the keyboard event 12 needs to be passed to the parent widget. Invoke gtk_main_do_event() if event needs to be passed to parent. 13 * UIProcess/API/gtk/PageClientImpl.h: Deleted obsolete functions didNotHandleKeyEvent & didNotHandleWheelEvent. 14 * UIProcess/API/gtk/WebKitWebViewBase.cpp: 15 (webkit_web_view_base_init): Initialize shouldForwardNextKeyEvent flag. 16 (webkitWebViewBaseKeyPressEvent): Pass event to parent widget depending on status from doneWithKeyEvent. 17 (webkitWebViewBaseKeyReleaseEvent): Pass event to parent widget depending on status from doneWithKeyEvent. 18 (webkitWebViewBaseForwardNextKeyEvent): API to set flag shouldForwardNextKeyEvent. 19 * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: Added API to set shouldForwardNextKeyEvent flag. 20 1 21 2011-07-28 Dan Bernstein <mitz@apple.com> 2 22 -
trunk/Source/WebKit2/Shared/NativeWebKeyboardEvent.h
r89211 r91937 68 68 const QKeyEvent* nativeEvent() const { return &m_nativeEvent; } 69 69 #elif PLATFORM(GTK) 70 constGdkEvent* nativeEvent() const { return m_nativeEvent.get(); }70 GdkEvent* nativeEvent() const { return m_nativeEvent.get(); } 71 71 #elif PLATFORM(EFL) 72 72 const void* nativeEvent() const { return m_nativeEvent; } -
trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp
r91169 r91937 206 206 } 207 207 208 void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled) 209 { 210 notImplemented(); 211 } 212 213 void PageClientImpl::didNotHandleKeyEvent(const NativeWebKeyboardEvent& event) 214 { 215 notImplemented(); 216 } 217 218 void PageClientImpl::didNotHandleWheelEvent(const NativeWebWheelEvent&) 219 { 220 notImplemented(); 208 void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool wasEventHandled) 209 { 210 if (wasEventHandled) 211 return; 212 213 WebKitWebViewBase* webkitWebViewBase = WEBKIT_WEB_VIEW_BASE(m_viewWidget); 214 webkitWebViewBaseForwardNextKeyEvent(webkitWebViewBase); 215 gtk_main_do_event(event.nativeEvent()); 221 216 } 222 217 -
trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h
r91169 r91937 80 80 virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&); 81 81 virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled); 82 virtual void didNotHandleKeyEvent(const NativeWebKeyboardEvent&);83 virtual void didNotHandleWheelEvent(const NativeWebWheelEvent&);84 82 virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*); 85 83 virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*); -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp
r89287 r91937 54 54 RefPtr<WebPageProxy> pageProxy; 55 55 gboolean isPageActive; 56 gboolean shouldForwardNextKeyEvent; 56 57 GtkIMContext* imContext; 57 58 GtkClickCounter clickCounter; … … 130 131 131 132 priv->isPageActive = TRUE; 133 priv->shouldForwardNextKeyEvent = FALSE; 132 134 133 135 gtk_widget_set_double_buffered(GTK_WIDGET(webkitWebViewBase), FALSE); … … 201 203 WebKitWebViewBasePrivate* priv = webViewBase->priv; 202 204 205 // Since WebProcess key event handling is not synchronous, handle the event in two passes. 206 // When WebProcess processes the input event, it will call PageClientImpl::doneWithKeyEvent 207 // with event handled status which determines whether to pass the input event to parent or not 208 // using gtk_main_do_event(). 209 if (priv->shouldForwardNextKeyEvent) { 210 priv->shouldForwardNextKeyEvent = FALSE; 211 return GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->key_press_event(widget, event); 212 } 203 213 priv->pageProxy->handleKeyboardEvent(NativeWebKeyboardEvent(reinterpret_cast<GdkEvent*>(event))); 204 205 return GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->key_press_event(widget, event); 214 return TRUE; 206 215 } 207 216 … … 214 223 return TRUE; 215 224 225 if (priv->shouldForwardNextKeyEvent) { 226 priv->shouldForwardNextKeyEvent = FALSE; 227 return GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->key_release_event(widget, event); 228 } 216 229 priv->pageProxy->handleKeyboardEvent(NativeWebKeyboardEvent(reinterpret_cast<GdkEvent*>(event))); 217 218 return GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->key_release_event(widget, event); 230 return TRUE; 219 231 } 220 232 … … 344 356 } 345 357 346 358 void webkitWebViewBaseForwardNextKeyEvent(WebKitWebViewBase* webkitWebViewBase) 359 { 360 webkitWebViewBase->priv->shouldForwardNextKeyEvent = TRUE; 361 } -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h
r88803 r91937 47 47 void webkitWebViewBaseSetTooltipText(WebKitWebViewBase*, const char*); 48 48 49 void webkitWebViewBaseForwardNextKeyEvent(WebKitWebViewBase*); 50 49 51 G_END_DECLS 50 52
Note: See TracChangeset
for help on using the changeset viewer.