diff --git a/shell_client.cpp b/shell_client.cpp --- a/shell_client.cpp +++ b/shell_client.cpp @@ -1211,7 +1211,12 @@ m_plasmaShellSurface = surface; auto updatePosition = [this, surface] { QRect rect = QRect(surface->position(), m_clientSize + QSize(borderLeft() + borderRight(), borderTop() + borderBottom())); - doSetGeometry(rect); + // Shell surfaces of internal windows are sometimes desync to current value. + // Make sure to not set window geometry of internal windows to invalid values (bug 386304). + // This is a workaround. + if (!m_internal || rect.isValid()) { + doSetGeometry(rect); + } }; auto updateRole = [this, surface] { NET::WindowType type = NET::Unknown;