From 4e32ea20d65dd81fae0d124d8c8fb60058602bdc Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Mon, 13 Jun 2022 12:16:31 +0300 Subject: [PATCH] Disable screen edge approach area if the edge is blocked Currently, if the screen edge is blocked and the cursor is inside its approach geometry, kwin is going to paint screen edge glow. It doesn't look good and it can have some performance penalties with fullscreen video games because the direct scanout path will be blocked. BUG: 454503 --- src/screenedge.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/screenedge.cpp b/src/screenedge.cpp index e3947f1e8d..03985f3ec5 100644 --- a/src/screenedge.cpp +++ b/src/screenedge.cpp @@ -583,6 +583,9 @@ void Edge::checkBlocking() } const bool wasTouch = activatesForTouchGesture(); m_blocked = newValue; + if (m_blocked && m_approaching) { + stopApproaching(); + } if (wasTouch != activatesForTouchGesture()) { Q_EMIT activatesForTouchGestureChanged(); } @@ -1430,7 +1433,7 @@ void ScreenEdges::check(const QPoint &pos, const QDateTime &now, bool forceNoPus { bool activatedForClient = false; for (auto it = m_edges.begin(); it != m_edges.end(); ++it) { - if (!(*it)->isReserved()) { + if (!(*it)->isReserved() || (*it)->isBlocked()) { continue; } if (!(*it)->activatesForPointer()) { @@ -1460,7 +1463,7 @@ bool ScreenEdges::isEntered(QMouseEvent *event) bool activatedForClient = false; for (auto it = m_edges.begin(); it != m_edges.end(); ++it) { Edge *edge = *it; - if (!edge->isReserved()) { + if (!edge->isReserved() || edge->isBlocked()) { continue; } if (!edge->activatesForPointer()) { @@ -1504,7 +1507,7 @@ bool ScreenEdges::handleEnterNotifiy(xcb_window_t window, const QPoint &point, c if (!edge || edge->window() == XCB_WINDOW_NONE) { continue; } - if (!edge->isReserved()) { + if (!edge->isReserved() || edge->isBlocked()) { continue; } if (!edge->activatesForPointer()) {