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
This commit is contained in:
Vlad Zahorodnii 2022-06-13 12:16:31 +03:00
parent 29946be29f
commit 4e32ea20d6

View file

@ -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()) {