https://bugs.kde.org/show_bug.cgi?id=492173
--- Comment #8 from Ritchie Frodomar <alkalinethun...@gmail.com> --- First time looking at this bug *as a programmer*, and here's what I've found so far. The zoom effect generally hides the true mouse cursor and takes control over rendering it, so that the cursor can do things like scale based on zoom level. Great. It only does this when the zoom level is other than 1.0 (so, when you're zoomed in). Otherwise it just lets kwin normally render the mouse cursor. When zoom is in charge of rendering the cursor, there's texture caching going on here. This code, although I don't fully understand it yet because my debugger is being really annoying about breakpoints, seems to be what's responsible for refreshing zoom's cursor texture when the cache becomes invalid. Usually it gets called when the cursor shape or theme changes. <code> GLTexture *ZoomEffect::ensureCursorTexture() { if (!m_cursorTexture || m_cursorTextureDirty) { m_cursorTexture.reset(); m_cursorTextureDirty = false; const auto cursor = effects->cursorImage(); if (!cursor.image().isNull()) { m_cursorTexture = GLTexture::upload(cursor.image()); if (!m_cursorTexture) { return nullptr; } m_cursorTexture->setWrapMode(GL_CLAMP_TO_EDGE); } } return m_cursorTexture.get(); } </code> What I've noticed in some limited debugging is that the body of the `if` statement just never executes when testing the Xwayland case. I have a code editor open running under xwayland in a nested Kwin session, and moving the mouse between the code editor and file tree never causes the cursor to change between an I-Beam and arrow. That code also never gets called. If zoomed out, the cursor does change properly between arrow/I-Beam, but the moment I zoom in, this stops working properly. Which makes sense, knowing zoom only takes over cursor rendering when you actually zoom into the screen. So that's where I'm at. This is definitely specific to just the zoom app and Xwayland windows. Normal Wayland ones work fine. -- You are receiving this mail because: You are watching all bug changes.