* monitor: ensure swapchain is updated before mode test
* monitor: ensure swapchain update via helper for all mode set paths
* monitor: fix formatting
* monitor: move swapchain helper to CMonitorState
* monitor: move swapchain helper to CMonitorState
fail to build from source
```
src/managers/screenshare/CursorshareSession.cpp:8:10:
fatal error: hyprgraphics/egl/Egl.hpp: No such file or directory
```
* subsurface: use geometry-aware damage and recurse into nested trees
Replace per-surface damageSurface() calls in recheckDamageForSubsurfaces()
with box-based damage that tracks each subsurface's last known global
position and size. When geometry changes, both the old and new areas are
damaged to correctly clear stale pixels and paint the new location.
Additionally, recurse into child subsurfaces so that nested subsurface
trees are properly damage-checked, with a depth limit of 32 to guard
against cycles. Cached geometry is invalidated on map/unmap to avoid
stale comparisons across surface lifecycle transitions.
* clang-format
* xwayland: prefer monitor-aware hover coords
Introduce monitor-aware XWayland coordinate helpers and keep the X11 hover path anchored to the main surface box while preserving detailed debug logging, reducing dependence on nearest-monitor guesses in layout-sensitive input paths.
* xwayland: use window monitor for reported coords
Report X11 window positions through the window's known monitor instead of the generic nearest-monitor heuristic so boundary-aligned outputs keep stable XWayland coordinates.
* xwayland: use window monitor for real position restore
Convert XWayland geometry back into compositor space using the window's current monitor when available so vertically offset layouts do not round-trip through the wrong output.
* xwayland: use window monitor for unmanaged geometry
Restore override-redirect X11 geometry through the window's known monitor so helper windows and popups avoid nearest-monitor misclassification on offset layouts.
* xwayland: remove monitor conversion debug logging
Drop the temporary XWayland hover and coordinate conversion diagnostics now that the monitor-selection bug is confirmed and the window-monitor based conversions fix the issue.
* xwayland: drop unrelated focused-motion change
Remove the exploratory X11-specific pointer focus scaling from InputManager so the monitor mapping fix stays narrowly scoped to the XWayland coordinate conversion changes that actually resolve the bug.
* clang-format XWaylandManager
Adds GTest unit tests for CDamageRing in src/helpers/DamageRing.hpp.
Covers:
- setSize: initial full damage, same-size no-op, resize re-damage, zero-size
- damage: in-bounds accept, empty/out-of-bounds reject, partial clip
- damageEntire: normal path and zero-size no-op
- rotate: clears current, preserves as previous, wraps beyond ring length
- getBufferDamage: age<=0 and age>ring return full screen, age=1 current only,
age=2 accumulates previous, full ring accumulation, coalescing fallback,
empty ring returns empty
- hasChanged: false initially, true after damage/damageEntire, false after
rotate, false for out-of-bounds damage
27 new test cases, all passing.
* misc: silence warnings about ignoring return value on reads
silence warnings on ignored return values on read() and print an error
if it occurs.
* misc: silence warnings about ignoring return value on writes
silence warnings on ignored return values on write() and print an error
where we can, or pass them the maybe_unused attribute.
* misc: silence warnings about ignoring return value on pipe
silence warnings on ignored return value on pipe(), print an error and
exit on failure.
Cover all public methods of the tag management helper:
- applyTag: set (+prefix), unset (-prefix), toggle (no prefix)
- applyTag with dynamic=true: star suffix appended
- isTagged: exact match, dynamic/star matching, strict mode
- isTagged: negative prefix inversion
- removeDynamicTag: removes star-suffixed entries
- getTags: returns full internal state