From e409cfca1765aad5f6cc09c0e0ebd019dd5b37e2 Mon Sep 17 00:00:00 2001
From: Joerg Bornemann <joerg.bornemann@qt.io>
Date: Fri, 8 Sep 2017 12:17:20 +0200
Subject: [PATCH] Remove QWebEngineViewPrivate::m_pendingContextMenuEvent

This flag was set in QWebEngineView::contextMenuEvent and checked in
QWebEnginePage::contextMenuRequested. The latter would bail out if the
flag was not set.

When the user pressed Shift-F10, the key event was received by
RenderWidgetHostViewQtDelegateWidget::event and forwarded to Chromium.
Blink's default event handler invoked the context menu, and our callback
QWebEnginePage::contextMenuRequested was called. But nothing happened,
because m_pendingContextMenuEvent has never been set.

There is no reason to have this flag. React on every context menu
request just like in the QtQuick implementation.

Now pressing Shift-F10 invokes the context menu on web pages.

Task-number: QTBUG-58306
Change-Id: I2db1b17604e5521e44613297120a964cc4e4d544
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
---
 src/webenginewidgets/api/qwebenginepage.cpp | 3 +--
 src/webenginewidgets/api/qwebengineview.cpp | 3 ---
 src/webenginewidgets/api/qwebengineview_p.h | 1 -
 3 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 51456128f..70f5984c7 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -1397,7 +1397,7 @@ void QWebEnginePagePrivate::wasHidden()
 
 bool QWebEnginePagePrivate::contextMenuRequested(const WebEngineContextMenuData &data)
 {
-    if (!view || !view->d_func()->m_pendingContextMenuEvent)
+    if (!view)
         return false;
 
     contextData.reset();
@@ -1423,7 +1423,6 @@ bool QWebEnginePagePrivate::contextMenuRequested(const WebEngineContextMenuData
         event.ignore();
         return false;
     }
-    view->d_func()->m_pendingContextMenuEvent = false;
     return true;
 }
 
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 56948bb18..0037f7e50 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -106,7 +106,6 @@ static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *obje
 
 QWebEngineViewPrivate::QWebEngineViewPrivate()
     : page(0)
-    , m_pendingContextMenuEvent(false)
     , m_dragEntered(false)
 {
 #ifndef QT_NO_ACCESSIBILITY
@@ -316,12 +315,10 @@ void QWebEngineView::setZoomFactor(qreal factor)
  */
 bool QWebEngineView::event(QEvent *ev)
 {
-    Q_D(QWebEngineView);
     // We swallow spontaneous contextMenu events and synthethize those back later on when we get the
     // HandleContextMenu callback from chromium
     if (ev->type() == QEvent::ContextMenu) {
         ev->accept();
-        d->m_pendingContextMenuEvent = true;
         return true;
     }
     return QWidget::event(ev);
diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h
index 45b3e266e..f3a37225b 100644
--- a/src/webenginewidgets/api/qwebengineview_p.h
+++ b/src/webenginewidgets/api/qwebengineview_p.h
@@ -70,7 +70,6 @@ public:
     QWebEngineViewPrivate();
 
     QWebEnginePage *page;
-    bool m_pendingContextMenuEvent;
     bool m_dragEntered;
 };
 
-- 
GitLab