Mouse interaction is inverted on the vertical axis only. This affects:
The issue stems from coordinate system mismatches between windowing systems and OpenGL:
The code was not converting between these coordinate systems, causing the Y-axis to be inverted.
Fixed coordinate system conversions in four locations:
GLFWMouseInput.cpp)WaylandOpenGLDriver.cpp)CScene.cpp)CWeb.cpp)Run tests with:
cd build
make test_mouse_coordinates
./output/test_mouse_coordinates
# Or use ctest:
ctest -R mouse_coordinate
See TEST_PLAN.md for detailed manual test instructions covering:
Note: Automated unit tests for coordinate conversion would be valuable but require integration with the rendering system. Manual testing has been comprehensive and covers all identified use cases.
This bug has existed since the initial implementation (2023). The recent particle rendering feature (#387, #400) made the issue more noticeable as it relies heavily on accurate mouse coordinates.
src/WallpaperEngine/Input/Drivers/GLFWMouseInput.cppsrc/WallpaperEngine/Render/Drivers/WaylandOpenGLDriver.cppsrc/WallpaperEngine/Render/Wallpapers/CScene.cppsrc/WallpaperEngine/Render/Wallpapers/CWeb.cppCOORDINATE_SYSTEM_DOCS.md - Comprehensive documentation of coordinate system conventionsTEST_PLAN.md - Detailed test plan and instructionsThis fix corrects incorrect behavior that has existed since 2023. The previous inverted behavior was a bug, not an intentional feature. No wallpapers should depend on the incorrect behavior, as it would have been unusable. However, if any user code or shaders were written expecting the old (incorrect) coordinates, they would need to be updated.
Migration: No migration needed - this fixes incorrect behavior to match expected behavior.