From 0d3d5db87cb9710bb1ed5496ea5f0d2cd79d3a95 Mon Sep 17 00:00:00 2001 From: JCallicoat Date: Tue, 19 Jan 2021 21:06:57 -0600 Subject: [PATCH] Fix menubar click-to-move window with Qt 5.15 Change logic in click handler in eventFilter so that startSystemMove() is only called when there is no menubar action under the mouse cursor (i.e., when a blank area of the menubar is clicked). Fixes #5925 --- src/gui/MainWindow.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index d1eb1fe17..5b3c5c9b6 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -1784,9 +1784,11 @@ bool MainWindowEventFilter::eventFilter(QObject* watched, QEvent* event) if (event->type() == QEvent::MouseButtonPress) { if (watched == mainWindow->m_ui->menubar) { - mainWindow->windowHandle()->startSystemMove(); - // Continue processing events, so menus keep working. - return false; + auto* m = static_cast(event); + if (!mainWindow->m_ui->menubar->actionAt(m->pos())) { + mainWindow->windowHandle()->startSystemMove(); + return false; + } } else if (watched == mainWindow->m_ui->toolBar) { if (!mainWindow->m_ui->toolBar->isMovable() || mainWindow->m_ui->toolBar->cursor() != Qt::SizeAllCursor) { mainWindow->windowHandle()->startSystemMove();