Skip to content
This repository was archived by the owner on Mar 28, 2026. It is now read-only.

Commit ecf1dbd

Browse files
authored
Merge pull request #1124 from nvask/fix-mouse-back-forward-double-action
Fix mouse back/forward buttons running action twice (#1115)
2 parents 378fc7f + 21875fe commit ecf1dbd

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/ui/EventFilter.cpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,18 +101,23 @@ bool EventFilter::eventFilter(QObject* watched, QEvent* event)
101101
}
102102
}
103103

104-
if (event->type() == QEvent::MouseButtonPress)
104+
if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease)
105105
{
106106
QMouseEvent* mouseEvent = dynamic_cast<QMouseEvent*>(event);
107107

108-
if (mouseEvent) {
109-
QQuickItem* webView = window->findChild<QQuickItem*>("web");
110-
111-
if (mouseEvent->button() == Qt::BackButton)
112-
QMetaObject::invokeMethod(webView, "goBack");
108+
if (mouseEvent && (mouseEvent->button() == Qt::BackButton || mouseEvent->button() == Qt::ForwardButton)) {
109+
// Only trigger navigation on release, but block both press and release
110+
// to prevent WebEngine from interpreting press-without-release as a long-press
111+
if (event->type() == QEvent::MouseButtonRelease)
112+
{
113+
QQuickItem* webView = window->findChild<QQuickItem*>("web");
113114

114-
if (mouseEvent->button() == Qt::ForwardButton)
115-
QMetaObject::invokeMethod(webView, "goForward");
115+
if (mouseEvent->button() == Qt::BackButton)
116+
QMetaObject::invokeMethod(webView, "goBack");
117+
else
118+
QMetaObject::invokeMethod(webView, "goForward");
119+
}
120+
return true;
116121
}
117122
}
118123

0 commit comments

Comments
 (0)