chore: clean up mouse drag to resize/move logic a little bit

1. No longer fallback to use move(), since all known platforms
   support startSystemMove(), and it's unlikely going to work
   if it's not supported on a specific platform.
2. Fix titlebar move check missing `window()->`.

This amends a10bbb4e8d
This commit is contained in:
2026-07-18 01:27:36 +08:00
parent a10bbb4e8d
commit a8aa5b5c30
4 changed files with 18 additions and 22 deletions

View File

@@ -353,16 +353,14 @@ void MainWindow::leaveEvent(QEvent *event)
void MainWindow::mousePressEvent(QMouseEvent *event)
{
bool optionalMaximized = false;
#if defined(Q_OS_WIN)
optionalMaximized = isMaximized();
#endif
#if defined(Q_OS_WIN)
const bool shouldAcceptDrag = !isMaximized() && !isFullScreen();
#else
const bool shouldAcceptDrag = !isFullScreen();
#endif
if (event->buttons() & Qt::LeftButton && !optionalMaximized && !isFullScreen()) {
if (event->buttons() & Qt::LeftButton && shouldAcceptDrag) {
m_clickedOnWindow = true;
m_oldMousePos = event->pos();
// qDebug() << m_oldMousePos << m_graphicsView->transform().m11()
// << m_graphicsView->transform().m22() << m_graphicsView->matrix().m12();
event->accept();
}
@@ -372,8 +370,8 @@ void MainWindow::mousePressEvent(QMouseEvent *event)
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton && m_clickedOnWindow) {
if (!window()->windowHandle()->startSystemMove()) {
move(event->globalPosition().toPoint() - m_oldMousePos);
if (window()->windowHandle()->startSystemMove()) {
m_clickedOnWindow = false;
}
event->accept();
}

View File

@@ -119,7 +119,6 @@ private:
ActionManager *m_am;
PlaylistManager *m_pm;
QPoint m_oldMousePos;
QPropertyAnimation *m_fadeOutAnimation;
QPropertyAnimation *m_floatUpAnimation;
QParallelAnimationGroup *m_exitAnimationGroup;

View File

@@ -115,7 +115,6 @@ void TitleBar::mousePressEvent(QMouseEvent *event)
}
m_dragPending = true;
m_moveStartPos = event->pos();
event->accept();
}
@@ -129,17 +128,18 @@ void TitleBar::mouseMoveEvent(QMouseEvent *event)
}
}
bool optionalMaximized = false;
#if defined(Q_OS_WIN)
optionalMaximized = isMaximized();
#endif
#if defined(Q_OS_WIN)
const bool shouldAcceptDrag = !window()->isMaximized() && !window()->isFullScreen();
#else
const bool shouldAcceptDrag = !window()->isFullScreen();
#endif
if (event->buttons() & Qt::LeftButton && m_dragPending && shouldAcceptDrag) {
if (event->buttons() & Qt::LeftButton && m_dragPending
&& !window()->isFullScreen() && !optionalMaximized) {
if (QWindow *wh = window()->windowHandle()) {
if (!wh->startSystemMove())
window()->move(event->globalPosition().toPoint() - m_moveStartPos);
if (wh->startSystemMove()) {
m_dragPending = false;
}
}
event->accept();
}

View File

@@ -54,7 +54,6 @@ private:
bool m_closeHovered = false;
bool m_closePressed = false;
bool m_dragPending = false;
QPoint m_moveStartPos;
};
#endif // TITLEBAR_H