mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-15 07:44:01 -04:00
* feat(screenshot): snap to active popouts and modals in region mode Allow region screenshot selector to detect and snap to visible shell popouts and modals on hover and click or keyboard confirmation. - PopoutManager.qml: add getActiveSurfaces() collecting visible DankPopout and DankModal global bounding boxes - DMSShellIPC.qml: add screenshot.getSurfaces IPC endpoint - core: fetch snap targets from shell IPC during region screenshot init - selector: highlight snap targets on hover with surface name and dimensions - selector: click or Enter/Space on hovered target locks selection to surface bounds - selector: allow hover snap over pre-selection (SelectionState.fromPreSelect) - selector: reset selection on degenerate (1x1) click release for quick re-selection - unit tests for display name formatting, hover detection, and render bounds * fix(screenshot): correct snap off-by-one and drag-away cancellation - region_input: fix drag-away snap cancellation by setting hasSelection=true and clearing preSelect so freeform dragging renders and is not discarded - region_input: add snapToTarget helper subtracting 1 device pixel (devPxX/Y) from currentX/currentY to prevent inclusive coordinate off-by-one (420x580 -> 420x580) - region_render: compute hover bounds with w = round(width * scaleX) and x2 = x1 + w - 1 to eliminate +1 device pixel in render bounds - region_snap_test: assert exact 420x580 bounds for both hover and snapped states * style(screenshot): format region_snap_test.go with golangci-lint-fmt