diff options
-rw-r--r-- | src/gui/kernel/qwindow.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 030628b5db..a167d6e249 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -2556,7 +2556,12 @@ bool QWindow::event(QEvent *ev) static const QEvent::Type contextMenuTrigger = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::ContextMenuOnMouseRelease).toBool() ? QEvent::MouseButtonRelease : QEvent::MouseButtonPress; - if (QMouseEvent *me = static_cast<QMouseEvent *>(ev); + auto asMouseEvent = [](QEvent *ev) { + const auto t = ev->type(); + return t == QEvent::MouseButtonPress || t == QEvent::MouseButtonRelease + ? static_cast<QMouseEvent *>(ev) : nullptr ; + }; + if (QMouseEvent *me = asMouseEvent(ev); me && ev->type() == contextMenuTrigger && me->button() == Qt::RightButton) { QSinglePointEvent *pev = static_cast<QSinglePointEvent*>(ev); QContextMenuEvent e(QContextMenuEvent::Mouse, me->position().toPoint(), |