fix(browser): use button release for forward/back navigation

Also check if mouse pointer is within the webview

Fixes #1564.
This commit is contained in:
Oleg Shparber 2024-07-21 20:48:54 -04:00
parent b8066c5540
commit 76187dc7d2
2 changed files with 13 additions and 6 deletions

View File

@ -206,16 +206,23 @@ void WebView::contextMenuEvent(QContextMenuEvent *event)
m_contextMenu->popup(event->globalPos());
}
bool WebView::handleMousePressEvent(QMouseEvent *event)
bool WebView::handleMouseReleaseEvent(QMouseEvent *event)
{
switch (event->button()) {
case Qt::BackButton:
back();
// Check if cursor is still inside webview.
if (rect().contains(event->pos())) {
back();
}
event->accept();
return true;
case Qt::ForwardButton:
forward();
if (rect().contains(event->pos())) {
forward();
}
event->accept();
return true;
@ -251,8 +258,8 @@ bool WebView::eventFilter(QObject *watched, QEvent *event)
{
if (watched->parent() == this) {
switch (event->type()) {
case QEvent::MouseButtonPress:
if (handleMousePressEvent(static_cast<QMouseEvent *>(event))) {
case QEvent::MouseButtonRelease:
if (handleMouseReleaseEvent(static_cast<QMouseEvent *>(event))) {
return true;
}

View File

@ -57,7 +57,7 @@ protected:
void contextMenuEvent(QContextMenuEvent *event) override;
private:
bool handleMousePressEvent(QMouseEvent *event);
bool handleMouseReleaseEvent(QMouseEvent *event);
bool handleWheelEvent(QWheelEvent *event);
QMenu *m_contextMenu = nullptr;