[Qt] QQuickWebView shouldn't recieve mouse events while dialogs are active
authorpierre.rossi@gmail.com <pierre.rossi@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 18 Jul 2012 17:43:36 +0000 (17:43 +0000)
committerpierre.rossi@gmail.com <pierre.rossi@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 18 Jul 2012 17:43:36 +0000 (17:43 +0000)
https://bugs.webkit.org/show_bug.cgi?id=91634

Reviewed by Alexis Menard.

One side-effect of reimplementing childMouseEventFilter() in r122438 is that it can end up
bypassing the mouseArea mechanism used in QML dialogs and still forward some mouse events
over to the web process. We can rely on the same m_dialogActive mechanism already used for
touch events in there as well.

* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebView::childMouseEventFilter): ignore events and return early if a dialog is active.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@122987 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp

index bc1ac27..437098b 100644 (file)
@@ -1,5 +1,20 @@
 2012-07-18  Pierre Rossi  <pierre.rossi@gmail.com>
 
+        [Qt] QQuickWebView shouldn't recieve mouse events while dialogs are active
+        https://bugs.webkit.org/show_bug.cgi?id=91634
+
+        Reviewed by Alexis Menard.
+
+        One side-effect of reimplementing childMouseEventFilter() in r122438 is that it can end up
+        bypassing the mouseArea mechanism used in QML dialogs and still forward some mouse events
+        over to the web process. We can rely on the same m_dialogActive mechanism already used for
+        touch events in there as well.
+
+        * UIProcess/API/qt/qquickwebview.cpp:
+        (QQuickWebView::childMouseEventFilter): ignore events and return early if a dialog is active.
+
+2012-07-18  Pierre Rossi  <pierre.rossi@gmail.com>
+
         [Qt] Build fix for ENABLE_TOUCH_EVENTS=0
 
         Rubber-stamped by No'am Rosenthal.
index 25bf2e7..1ba028f 100644 (file)
@@ -1660,6 +1660,12 @@ bool QQuickWebView::childMouseEventFilter(QQuickItem* item, QEvent* event)
     if (!isVisible() || !isEnabled() || !s_flickableViewportEnabled)
         return QQuickFlickable::childMouseEventFilter(item, event);
 
+    Q_D(QQuickWebView);
+    if (d->m_dialogActive) {
+        event->ignore();
+        return false;
+    }
+
     // This function is used by MultiPointTouchArea and PinchArea to filter
     // touch events, thus to hinder the canvas from sending synthesized
     // mouse events to the Flickable implementation we need to reimplement