fix(presentatie): Escape verlaat presentatie na platform-fullscreen-exit (#1862) #1867

Merged
brenno merged 1 commit from fix/escape-exits-presentation-1862 into main 2026-08-30 09:07:37 +00:00
Owner

Samenvatting

macOS native fullscreen (toggleFullScreen:) en de browser-Fullscreen-API onderscheppen Escape op platformniveau om het volledig scherm te verlaten — de toets bereikt Flutter nooit. Pijltjestoetsen en Cmd+W komen wél door. Daardoor deed Escape niets, terwijl de documentatie (SHORTCUTS.nl.md r. 176-180) belooft dat het de presentatie verlaat.

De presentator pollt nu isPresenterFullscreen() elke 300 ms en verlaat de presentatie zodra het volledig scherm onverwacht verdwijnt. Zo doet Escape alsnog wat beloofd is.

Nieuwe facade isPresenterFullscreen() in presenter_fullscreen.dart met IO- en web-implementaties. De guard is transparant in tests (geen native venster → altijd false → geen exit).

Bewaker-step overgeslagen: de wijziging raakt geen bestandsformaat, opslag, afhankelijkheid, uitgaand verkeer of publieke belofte — ze maakt een bestaande belofte waar.

Testplan

  • make check groen (10.968 tests, 87.0% dekking)
  • make check-secrets clean (gitleaks + trufflehog, 0 leaks)
  • make sast clean (semgrep, 0 findings)
  • Nieuwe tests: isPresenterFullscreen returns false without a native window en the fullscreen guard does not exit when fullscreen was never active
  • Bestaande Escape-tests blijven groen (45 → 47 tests)
  • Beeldkeuring: Escape verlaat presentatie op macOS in volledig scherm

Generated with Devin

## Samenvatting macOS native fullscreen (`toggleFullScreen:`) en de browser-Fullscreen-API onderscheppen Escape op platformniveau om het volledig scherm te verlaten — de toets bereikt Flutter nooit. Pijltjestoetsen en Cmd+W komen wél door. Daardoor deed Escape niets, terwijl de documentatie (SHORTCUTS.nl.md r. 176-180) belooft dat het de presentatie verlaat. De presentator pollt nu `isPresenterFullscreen()` elke 300 ms en verlaat de presentatie zodra het volledig scherm onverwacht verdwijnt. Zo doet Escape alsnog wat beloofd is. Nieuwe facade `isPresenterFullscreen()` in `presenter_fullscreen.dart` met IO- en web-implementaties. De guard is transparant in tests (geen native venster → altijd false → geen exit). Bewaker-step overgeslagen: de wijziging raakt geen bestandsformaat, opslag, afhankelijkheid, uitgaand verkeer of publieke belofte — ze maakt een bestaande belofte waar. #### Testplan - [x] `make check` groen (10.968 tests, 87.0% dekking) - [x] `make check-secrets` clean (gitleaks + trufflehog, 0 leaks) - [x] `make sast` clean (semgrep, 0 findings) - [x] Nieuwe tests: `isPresenterFullscreen returns false without a native window` en `the fullscreen guard does not exit when fullscreen was never active` - [x] Bestaande Escape-tests blijven groen (45 → 47 tests) - [ ] Beeldkeuring: Escape verlaat presentatie op macOS in volledig scherm Generated with [Devin](https://devin.ai)
fix(presentatie): Escape verlaat presentatie na platform-fullscreen-exit (#1862)
All checks were successful
scans / scans (pull_request) Successful in 2m12s
static-gate / static-gate (pull_request) Successful in 5m19s
778bda1977
macOS native fullscreen en de browser-Fullscreen-API onderscheppen Escape
op platformniveau om het volledig scherm te verlaten — de toets bereikt
Flutter nooit. Pijltjestoetsen en Cmd+W komen wél door. De presentator
pollt nu isPresenterFullscreen() en verlaat de presentatie zodra het
volledig scherm onverwacht verdwijnt, zodat Escape alsnog doet wat de
documentatie belooft.

Nieuwe facade isPresenterFullscreen() in presenter_fullscreen.dart met
IO- en web-implementaties. De guard pollt elke 300 ms en is transparant
in tests (geen native venster → altijd false → geen exit).

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit b6a2a1a80b into main 2026-08-30 09:07:37 +00:00
Sign in to join this conversation.
No description provided.