diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-07-31 16:57:26 +0200 |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-08-01 12:20:53 +0200 |
commit | 2934694fec0acb21f759e288e6943bbf206edecf (patch) | |
tree | e79fb79b5449865ea539b25363a0232ad32cad59 /lib | |
parent | a3cc1b314270041b0746edb3359756188ff1487c (diff) |
Forward mouse hover events to the page.
Change-Id: I5ce13af04de8520bb0ab93c48a2493822aa42294
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/quick/render_widget_host_view_qt_delegate_quick.cpp | 6 | ||||
-rw-r--r-- | lib/quick/render_widget_host_view_qt_delegate_quick.h | 1 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt.cpp | 10 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt.h | 2 | ||||
-rw-r--r-- | lib/web_event_factory.cpp | 19 | ||||
-rw-r--r-- | lib/web_event_factory.h | 4 | ||||
-rw-r--r-- | lib/widgets/render_widget_host_view_qt_delegate_widget.cpp | 1 |
7 files changed, 42 insertions, 1 deletions
diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp index 0c67f6e2f..2c3f09647 100644 --- a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp +++ b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp @@ -48,6 +48,7 @@ RenderWidgetHostViewQtDelegateQuick::RenderWidgetHostViewQtDelegateQuick(QQuickI : QQuickPaintedItem(parent) { setAcceptedMouseButtons(Qt::AllButtons); + setAcceptHoverEvents(true); } QRectF RenderWidgetHostViewQtDelegateQuick::screenRect() const @@ -164,3 +165,8 @@ void RenderWidgetHostViewQtDelegateQuick::touchEvent(QTouchEvent *event) { forwardEvent(event); } + +void RenderWidgetHostViewQtDelegateQuick::hoverMoveEvent(QHoverEvent *event) +{ + forwardEvent(event); +} diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.h b/lib/quick/render_widget_host_view_qt_delegate_quick.h index 38ddf0146..fca595376 100644 --- a/lib/quick/render_widget_host_view_qt_delegate_quick.h +++ b/lib/quick/render_widget_host_view_qt_delegate_quick.h @@ -90,6 +90,7 @@ public: void keyReleaseEvent(QKeyEvent*); void wheelEvent(QWheelEvent*); void touchEvent(QTouchEvent*); + void hoverMoveEvent(QHoverEvent*); protected: void updatePolish(); diff --git a/lib/render_widget_host_view_qt.cpp b/lib/render_widget_host_view_qt.cpp index ad6544afa..41b8fe1a8 100644 --- a/lib/render_widget_host_view_qt.cpp +++ b/lib/render_widget_host_view_qt.cpp @@ -130,6 +130,11 @@ bool RenderWidgetHostViewQt::handleEvent(QEvent* event) { case QEvent::TouchEnd: handleTouchEvent(static_cast<QTouchEvent*>(event)); break; + case QEvent::HoverEnter: + case QEvent::HoverLeave: + case QEvent::HoverMove: + handleHoverEvent(static_cast<QHoverEvent*>(event)); + break; case QEvent::FocusIn: case QEvent::FocusOut: handleFocusEvent(static_cast<QFocusEvent*>(event)); @@ -609,6 +614,11 @@ void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev) RemoveExpiredMappings(ev); } +void RenderWidgetHostViewQt::handleHoverEvent(QHoverEvent *ev) +{ + m_host->ForwardMouseEvent(WebEventFactory::toWebMouseEvent(ev)); +} + void RenderWidgetHostViewQt::handleFocusEvent(QFocusEvent *ev) { if (ev->gotFocus()) { diff --git a/lib/render_widget_host_view_qt.h b/lib/render_widget_host_view_qt.h index 22fe22512..dbbb89339 100644 --- a/lib/render_widget_host_view_qt.h +++ b/lib/render_widget_host_view_qt.h @@ -54,6 +54,7 @@ class BackingStoreQt; class QEvent; class QFocusEvent; +class QHoverEvent; class QKeyEvent; class QMouseEvent; class QTouchEvent; @@ -139,6 +140,7 @@ public: void handleKeyEvent(QKeyEvent*); void handleWheelEvent(QWheelEvent*); void handleTouchEvent(QTouchEvent*); + void handleHoverEvent(QHoverEvent*); void handleFocusEvent(QFocusEvent*); #if defined(OS_MACOSX) diff --git a/lib/web_event_factory.cpp b/lib/web_event_factory.cpp index 8ba4a159d..34b587f75 100644 --- a/lib/web_event_factory.cpp +++ b/lib/web_event_factory.cpp @@ -499,6 +499,10 @@ static WebInputEvent::Type webEventTypeForEvent(const QEvent* event) return WebInputEvent::MouseDown; case QEvent::MouseButtonRelease: return WebInputEvent::MouseUp; + case QEvent::Enter: + return WebInputEvent::MouseEnter; + case QEvent::Leave: + return WebInputEvent::MouseLeave; case QEvent::MouseMove: return WebInputEvent::MouseMove; case QEvent::Wheel: @@ -507,6 +511,8 @@ static WebInputEvent::Type webEventTypeForEvent(const QEvent* event) return WebInputEvent::KeyDown; case QEvent::KeyRelease: return WebInputEvent::KeyUp; + case QEvent::HoverMove: + return WebInputEvent::MouseMove; case QEvent::TouchBegin: return WebInputEvent::TouchStart; case QEvent::TouchUpdate: @@ -552,6 +558,19 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QMouseEvent *ev) return webKitEvent; } +WebMouseEvent WebEventFactory::toWebMouseEvent(QHoverEvent *ev) +{ + WebMouseEvent webKitEvent; + webKitEvent.timeStampSeconds = currentTimeForEvent(ev); + webKitEvent.modifiers = modifiersForEvent(ev); + + webKitEvent.x = webKitEvent.windowX = ev->pos().x(); + webKitEvent.y = webKitEvent.windowY = ev->pos().y(); + + webKitEvent.type = webEventTypeForEvent(ev); + return webKitEvent; +} + WebKit::WebMouseWheelEvent WebEventFactory::toWebWheelEvent(QWheelEvent *ev) { WebMouseWheelEvent webEvent; diff --git a/lib/web_event_factory.h b/lib/web_event_factory.h index bacb7132c..c2bb5f718 100644 --- a/lib/web_event_factory.h +++ b/lib/web_event_factory.h @@ -45,14 +45,16 @@ #include "content/public/browser/native_web_keyboard_event.h" #include "third_party/WebKit/public/web/WebInputEvent.h" -class QMouseEvent; +class QHoverEvent; class QKeyEvent; +class QMouseEvent; class QWheelEvent; class WebEventFactory { public: static WebKit::WebMouseEvent toWebMouseEvent(QMouseEvent*); + static WebKit::WebMouseEvent toWebMouseEvent(QHoverEvent*); static WebKit::WebMouseWheelEvent toWebWheelEvent(QWheelEvent*); static content::NativeWebKeyboardEvent toWebKeyboardEvent(QKeyEvent*); }; diff --git a/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp b/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp index ee6d553c9..c084a35dd 100644 --- a/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp @@ -50,6 +50,7 @@ RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(QWidg : QWidget(parent) { setFocusPolicy(Qt::ClickFocus); + setMouseTracking(true); setAttribute(Qt::WA_AcceptTouchEvents); setAttribute(Qt::WA_OpaquePaintEvent); |