Files

Map gesture release regression

This test compiles the production gesture callback and its helpers extracted from map_viewport.cpp, then sends pointer samples through real LVGL 9.4. It does not simulate release by directly calling the map callback. The fixture only substitutes the surrounding runtime fields; no SD or board is involved.

cmake -S tests/map_gesture -B .codex-build/map-gesture \
  -DLVGL_DIR=/path/to/lvgl-9.4 -DCMAKE_BUILD_TYPE=Debug
cmake --build .codex-build/map-gesture --parallel
ctest --test-dir .codex-build/map-gesture --output-on-failure

It checks a tap and 100 consecutive drags, including dragging outside the surface. Each drag must emit exactly one DragEnd or Cancel and clear both pressed and dragging state. Assertions are enabled even in release builds.

Before the fix the pinned dependency reproduces on the first drag: release lost: cycle=0 pressed=1 dragging=1 ended=0. Calling lv_indev_stop_processing from the map's object PRESSING handler leaves a flag which suppresses delivery of a subsequent RELEASED to that object. Limiting consumption to the current event with lv_event_stop_bubbling passes the same test. Physical touch-driver and complete viewport/loader integration are separately verified on the board with the MAPD diagnostics.