diff options
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp | 12 | ||||
-rw-r--r-- | Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp | 6 | ||||
-rw-r--r-- | Source/WebKit/qt/WidgetApi/qwebview.cpp | 6 |
3 files changed, 15 insertions, 9 deletions
diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp index 6f9cebce1..039c23218 100644 --- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp +++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp @@ -453,6 +453,11 @@ void QWebPageAdapter::adjustPointForClicking(QMouseEvent* ev) if (!topPadding && !rightPadding && !bottomPadding && !leftPadding) return; + FrameView* view = page->mainFrame()->view(); + ASSERT(view); + if (view->scrollbarAtPoint(ev->pos())) + return; + EventHandler* eventHandler = page->mainFrame()->eventHandler(); ASSERT(eventHandler); @@ -1468,7 +1473,12 @@ bool QWebPageAdapter::touchEvent(QTouchEvent* event) { #if ENABLE(TOUCH_EVENTS) Frame* frame = mainFrameAdapter()->frame; - if (!frame->view()) + if (!frame->view() || !frame->document()) + return false; + + // If the document doesn't have touch-event handles, we just ignore it + // and let QGuiApplication convert it to a mouse event. + if (!frame->document()->hasTouchEventHandlers()) return false; // Always accept the QTouchEvent so that we'll receive also TouchUpdate and TouchEnd events diff --git a/Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp b/Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp index 69138d73f..4aa6a5f8d 100644 --- a/Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp +++ b/Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp @@ -291,10 +291,8 @@ bool QGraphicsWebView::sceneEvent(QEvent* event) || event->type() == QEvent::TouchEnd || event->type() == QEvent::TouchUpdate || event->type() == QEvent::TouchCancel)) { - d->page->event(event); - - // Always return true so that we'll receive also TouchUpdate and TouchEnd events - return true; + if (d->page->event(event)) + return true; } return QGraphicsWidget::sceneEvent(event); diff --git a/Source/WebKit/qt/WidgetApi/qwebview.cpp b/Source/WebKit/qt/WidgetApi/qwebview.cpp index 9ba962178..bcbf3dcc2 100644 --- a/Source/WebKit/qt/WidgetApi/qwebview.cpp +++ b/Source/WebKit/qt/WidgetApi/qwebview.cpp @@ -722,10 +722,8 @@ bool QWebView::event(QEvent *e) || e->type() == QEvent::TouchEnd || e->type() == QEvent::TouchUpdate || e->type() == QEvent::TouchCancel) { - d->page->event(e); - - // Always return true so that we'll receive also TouchUpdate and TouchEnd events - return true; + if (d->page->event(e)) + return true; } else if (e->type() == QEvent::Leave) d->page->event(e); } |