Ctrl/Cmd+O twee keer indrukken opent twee 'Presentatie openen'-dialogen #1927

Closed
opened 2026-09-02 18:32:31 +00:00 by brenno · 3 comments
Owner

Wat er gebeurt

Met een presentatie open twee keer snel achter elkaar Ctrl+O (of Cmd+O) drukken. Er verschijnen twee openen-dialogen op elkaar. Na het kiezen van een bestand in de bovenste blijft de onderste staan en moet je die apart wegklikken.

Wat er hoort te gebeuren

Een tweede Ctrl/Cmd+O terwijl de openen-dialoog al open staat doet niets — of brengt de bestaande dialoog naar voren. Nooit twee.

Stappen om te herhalen

  1. Open OciDeck met een presentatie.
  2. Druk twee keer snel achter elkaar Ctrl+O (macOS: Cmd+O).
  3. Er staan twee dialogen gestapeld.

Vermoedelijke oorzaak

_openActive() in lib/widgets/app_shell.dart roept _openWithSearch() in lib/widgets/shell/shell_actions.dart aan zonder enige bewaking tegen heropening. showDialog stapelt gewoon een tweede route. Dezelfde actie hangt onder drie ingangen (sneltoets, menubalk, welkomstscherm), dus de bewaking hoort bij de actie zelf en niet bij één ingang.

Waarschijnlijk raakt dit ook de andere app-brede sneltoetsen die een dialoog openen (opslaan-als, importeren) — die moeten meegenomen worden in de controle.

## Wat er gebeurt Met een presentatie open twee keer snel achter elkaar Ctrl+O (of Cmd+O) drukken. Er verschijnen **twee** openen-dialogen op elkaar. Na het kiezen van een bestand in de bovenste blijft de onderste staan en moet je die apart wegklikken. ## Wat er hoort te gebeuren Een tweede Ctrl/Cmd+O terwijl de openen-dialoog al open staat doet niets — of brengt de bestaande dialoog naar voren. Nooit twee. ## Stappen om te herhalen 1. Open OciDeck met een presentatie. 2. Druk twee keer snel achter elkaar Ctrl+O (macOS: Cmd+O). 3. Er staan twee dialogen gestapeld. ## Vermoedelijke oorzaak `_openActive()` in `lib/widgets/app_shell.dart` roept `_openWithSearch()` in `lib/widgets/shell/shell_actions.dart` aan zonder enige bewaking tegen heropening. `showDialog` stapelt gewoon een tweede route. Dezelfde actie hangt onder drie ingangen (sneltoets, menubalk, welkomstscherm), dus de bewaking hoort bij de actie zelf en niet bij één ingang. Waarschijnlijk raakt dit ook de andere app-brede sneltoetsen die een dialoog openen (opslaan-als, importeren) — die moeten meegenomen worden in de controle.
Author
Owner

Opgepakt. Tak: fix/single-open-dialog-guard.

Verwachte reikwijdte: een herentree-bewaking op de app-brede dialoogacties in lib/widgets/app_shell.dart / lib/widgets/shell/shell_actions.dart, plus een regressietest die twee keer Ctrl+O stuurt en telt hoeveel dialogen er staan. Ik loop daarbij de andere sneltoetsen na die een dialoog openen.

Opgepakt. Tak: `fix/single-open-dialog-guard`. Verwachte reikwijdte: een herentree-bewaking op de app-brede dialoogacties in `lib/widgets/app_shell.dart` / `lib/widgets/shell/shell_actions.dart`, plus een regressietest die twee keer Ctrl+O stuurt en telt hoeveel dialogen er staan. Ik loop daarbij de andere sneltoetsen na die een dialoog openen.
Author
Owner

PR: #1933 (tak fix/single-open-dialog-guard, drie commits).

Oorzaak: showDialog duwt zijn route synchroon, maar de focusboom verwerkt die wissel pas in de volgende frame — de tweede aanslag komt dus nog bij de app-brede binding aan. Op macOS telt de native menubalk met dezelfde Cmd-sneltoets daarbij op.

Opgelost aan de invoerkant: alle app-brede bindingen lopen langs _onlyWhenShellIsOnTop, dus geen enkele sneltoets vuurt nog door een dialoog, de documentatielezer of het presentatiescherm heen. Dat dekt ook opslaan, sluiten en zoeken.

Meegenomen: SHORTCUTS.md miste de app-brede Ctrl/Cmd+W, en het doccommentaar boven _openWithSearch beschreef de pakketexport (weesje van een eerdere splitsing).

make check groen (7175 tests, dekkingsvloeren, goldens), secrets- en SAST-scan schoon. Regressietest eerst rood gezien. Wacht nu op de CI-runner, die sinds 04:51 UTC vastzit op een job van een andere repo.

PR: https://pawprint.vigilis.online/LibreKAT/Ocideck/pulls/1933 (tak `fix/single-open-dialog-guard`, drie commits). Oorzaak: `showDialog` duwt zijn route synchroon, maar de focusboom verwerkt die wissel pas in de volgende frame — de tweede aanslag komt dus nog bij de app-brede binding aan. Op macOS telt de native menubalk met dezelfde Cmd-sneltoets daarbij op. Opgelost aan de invoerkant: alle app-brede bindingen lopen langs `_onlyWhenShellIsOnTop`, dus geen enkele sneltoets vuurt nog door een dialoog, de documentatielezer of het presentatiescherm heen. Dat dekt ook opslaan, sluiten en zoeken. Meegenomen: SHORTCUTS.md miste de app-brede Ctrl/Cmd+W, en het doccommentaar boven `_openWithSearch` beschreef de pakketexport (weesje van een eerdere splitsing). `make check` groen (7175 tests, dekkingsvloeren, goldens), secrets- en SAST-scan schoon. Regressietest eerst rood gezien. Wacht nu op de CI-runner, die sinds 04:51 UTC vastzit op een job van een andere repo.
Author
Owner

Gemerged in main als af8715935 (PR #1933). Ctrl/Cmd+O twee keer indrukken opent voortaan één dialoog.

Wat er níet in zat: de bestandslijst van dat scherm is nog steeds niet met het toetsenbord te bedienen — dat is bestaand gedrag en staat apart als #1934.

Gemerged in main als `af8715935` (PR #1933). Ctrl/Cmd+O twee keer indrukken opent voortaan één dialoog. Wat er níet in zat: de bestandslijst van dat scherm is nog steeds niet met het toetsenbord te bedienen — dat is bestaand gedrag en staat apart als #1934.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1927
No description provided.