summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp12
-rw-r--r--Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp6
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebview.cpp6
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);
}