diff --git a/kwin/src/breezydesktopeffect.cpp b/kwin/src/breezydesktopeffect.cpp index f3e2ceb..723834b 100644 --- a/kwin/src/breezydesktopeffect.cpp +++ b/kwin/src/breezydesktopeffect.cpp @@ -310,6 +310,10 @@ void BreezyDesktopEffect::activate() void BreezyDesktopEffect::deactivate() { qCCritical(KWIN_XR) << "\t\t\tBreezy - deactivate"; + + m_effectTargetScreenIndex = -1; + invalidateEffectOnScreenGeometryCache(); + disconnect(effects, &EffectsHandler::cursorShapeChanged, this, &BreezyDesktopEffect::updateCursorImage); m_cursorUpdateTimer->stop(); showCursor(); @@ -894,9 +898,16 @@ bool BreezyDesktopEffect::updateEffectOnScreenGeometryCache() if (m_effectTargetScreenIndex == -1) return false; - Output *effectOnScreen = effects->screens().at(m_effectTargetScreenIndex); - if (!effectOnScreen) + const auto screensList = effects->screens(); + if (m_effectTargetScreenIndex >= screensList.count()) { + m_effectTargetScreenIndex = -1; return false; + } + Output *effectOnScreen = screensList.at(m_effectTargetScreenIndex); + if (!effectOnScreen) { + m_effectTargetScreenIndex = -1; + return false; + } const QRect geometry = effectOnScreen->geometry(); const int marginX = (m_cursorImageSize.width() > 0) ? m_cursorImageSize.width() : 10; diff --git a/kwin/src/qml/main.qml b/kwin/src/qml/main.qml index 2d0bb71..60fa8ac 100644 --- a/kwin/src/qml/main.qml +++ b/kwin/src/qml/main.qml @@ -143,6 +143,10 @@ Item { if (targetScreenSupported) effect.effectTargetScreenIndex = KWinComponents.Workspace.screens.indexOf(targetScreen); } + onScreensChanged: { + checkLoadedComponent(); + } + onImuResetStateChanged: { checkLoadedComponent(); }