PlasmaZones 3.0.15

2 changes, released May 28, 2026.

Fixed

  • Zone-selector popup at the screen edge switched the active layout on hover, resnapping every tiled window (#542): the zone-selector slot was supposed to be input-transparent during drag, because cursor coordinates come in via the D-Bus updateSelectorPosition path and the snap commits at drag-end via drop.cpp, never via a Qt hover event. But the slot’s QML MouseAreas still fired zoneSelected on every pointer-enter, and once snap-assist became visible the shared shell surface flipped to input-grabbing (anyInputGrabbing = isVisible(snapAssistSlot) || isVisible(layoutPickerSlot) in syncPassiveShellSurfaceState). Those leaked hover events committed manualLayoutSelected, which immediately resnapped every other tiled window into the new layout’s zones. Visible as “my layout changes to one with more or fewer windows whenever I drag windows up”. The QML hover commit path is gone (ZoneSelectorContent is now interactive: false and the daemon’s manualLayoutSelected handler / signal are removed), and cross-layout switching on drop still works because WindowDragAdaptor::dragStopped reads m_selectedLayoutId from the C++ hit-test and applies the layout when the user actually releases the drag on a zone in a different layout.

Removed

  • Switching the autotile algorithm by hovering an autotile preview in the zone-selector popup (#542): the autotile-hover commit path went away with the input-contract fix above (drop.cpp resolves the selected id as a UUID and skips non-UUID autotile ids, so the hover path was the only commit point for autotile-via-zone-selector). Algorithm swaps still work through the existing on-by-default routes such as NextLayout / PreviousLayout, QuickLayout1QuickLayout9, and the Layout Picker (Meta+Alt+Space by default). The IOverlayService::autotileLayoutSelected signal and its daemon handler were removed as dead code.