From 18912d5710ffd8e1ed5ee73751b1162019825bea Mon Sep 17 00:00:00 2001 From: Altair Wei Date: Sat, 9 Oct 2021 20:30:37 +0800 Subject: [PATCH] fix mouse behavior on resize handler region --- src/core/framelesshelper.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/framelesshelper.cpp b/src/core/framelesshelper.cpp index 6e579cf..60dd0ba 100644 --- a/src/core/framelesshelper.cpp +++ b/src/core/framelesshelper.cpp @@ -535,6 +535,11 @@ bool FramelessHelper::eventFilter(QObject *object, QEvent *event) auto ev = static_cast(event); updateMouse(ev->pos()); + // Resize handler have highest priority, so we do not + // send event to Qt. It works like non-client region. + if (isHoverResizeHandler()) + filterOut = true; + if (m_clickedFrameSection == Qt::TitleBarArea && isInTitlebarArea(ev->pos())) { // Start system move @@ -568,6 +573,10 @@ bool FramelessHelper::eventFilter(QObject *object, QEvent *event) if (ev->button() == Qt::LeftButton) m_clickedFrameSection = m_hoveredFrameSection; + // Prevents buttons on the edge from being clicked + if (isHoverResizeHandler()) + filterOut = true; + break; } @@ -585,12 +594,15 @@ bool FramelessHelper::eventFilter(QObject *object, QEvent *event) if (isHoverResizeHandler() && ev->button() == Qt::LeftButton) { // double click resize handler handleResizeHandlerDblClicked(); + filterOut = true; } else if (isInTitlebarArea(ev->pos()) && ev->button() == Qt::LeftButton) { Qt::WindowStates states = m_window->windowState(); if (states & Qt::WindowMaximized) m_window->showNormal(); else m_window->showMaximized(); + + filterOut = true; } break;