[Gebruiksgemak][P2] Diaoverzicht en beeldkiezer: een enkele klik reageert 300 ms te laat door de dubbelklik-detector #2684

Closed
opened 2026-10-31 09:47:51 +00:00 by brenno · 4 comments
Owner

Symptoom

Waar dezelfde GestureDetector zowel onTap als onDoubleTap heeft, wacht Flutter na elke klik kDoubleTapTimeout (300 ms) voordat de enkele klik telt. De klik voelt traag of "niet geregistreerd", en mensen klikken nog eens:

  1. Diaoverzicht (raster): een klik selecteert pas na 300 ms; een dubbelklik opent de dia. Zie lib/widgets/panels/preview_panel_overview_cards.dart:355-357.
  2. Afbeeldingskiezer: een klik selecteert pas na 300 ms; een dubbelklik kiest en sluit. Zie lib/widgets/dialogs/parts/image_carousel_picker_grid.dart:43-48 en 301-304.

Voorgestelde oplossing

Selecteer meteen en laat de dubbelklik alleen de tweede actie doen. Selecteren is idempotent, dus dat de eerste klik van een dubbelklik ook selecteert, kan geen kwaad. Concreet: selecteer in Listener(onPointerDown: …) of onTapDown en houd onDoubleTap voor openen of kiezen. Eén kleine gedeelde widget ("directe klik + dubbelklik") dekt beide plekken; zo'n widget bestaat nog niet.

Bewust buiten deze issue: de kwaliteits- en privacybadge op een miniatuur (lib/widgets/slides/slide_thumbnail.dart:107-119) heeft dezelfde vertraging. Daar is de dubbelklik ("Dubbelklik beslist", USER_GUIDE) een gedocumenteerde functie en opent de enkele klik een popover. Directe klik én dubbelklik betekent daar dat de popover even opflitst. Dat is een productkeuze, geen reparatie.

Wat overeind moet blijven

  • Een dubbelklik op een overzichtskaart opent de dia; in de beeldkiezer kiest en sluit hij.
  • Shift- en Ctrl/Cmd-klik voor meervoudige selectie in het overzicht.
  • De Semantics-tap (toegankelijkheid) op de kaart selecteert nog steeds.

Toets

Widget: tester.tap(kaart) gevolgd door pump(Duration(milliseconds: 50)). De kaart is dan al geselecteerd; nu gebeurt dat pas na 300 ms. Een dubbeltik opent nog steeds.

Gevonden bij codelezing tijdens de vervolginspectie van 31-10-2026.

## Symptoom Waar dezelfde `GestureDetector` zowel `onTap` als `onDoubleTap` heeft, wacht Flutter na elke klik `kDoubleTapTimeout` (300 ms) voordat de enkele klik telt. De klik voelt traag of "niet geregistreerd", en mensen klikken nog eens: 1. **Diaoverzicht (raster):** een klik selecteert pas na 300 ms; een dubbelklik opent de dia. Zie `lib/widgets/panels/preview_panel_overview_cards.dart:355-357`. 2. **Afbeeldingskiezer:** een klik selecteert pas na 300 ms; een dubbelklik kiest en sluit. Zie `lib/widgets/dialogs/parts/image_carousel_picker_grid.dart:43-48` en `301-304`. ## Voorgestelde oplossing Selecteer meteen en laat de dubbelklik alleen de tweede actie doen. Selecteren is idempotent, dus dat de eerste klik van een dubbelklik ook selecteert, kan geen kwaad. Concreet: selecteer in `Listener(onPointerDown: …)` of `onTapDown` en houd `onDoubleTap` voor openen of kiezen. Eén kleine gedeelde widget ("directe klik + dubbelklik") dekt beide plekken; zo'n widget bestaat nog niet. **Bewust buiten deze issue:** de kwaliteits- en privacybadge op een miniatuur (`lib/widgets/slides/slide_thumbnail.dart:107-119`) heeft dezelfde vertraging. Daar is de dubbelklik ("Dubbelklik beslist", USER_GUIDE) een gedocumenteerde functie en opent de enkele klik een popover. Directe klik én dubbelklik betekent daar dat de popover even opflitst. Dat is een productkeuze, geen reparatie. ## Wat overeind moet blijven - Een dubbelklik op een overzichtskaart opent de dia; in de beeldkiezer kiest en sluit hij. - Shift- en Ctrl/Cmd-klik voor meervoudige selectie in het overzicht. - De Semantics-tap (toegankelijkheid) op de kaart selecteert nog steeds. ## Toets Widget: `tester.tap(kaart)` gevolgd door `pump(Duration(milliseconds: 50))`. De kaart is dan al geselecteerd; nu gebeurt dat pas na 300 ms. Een dubbeltik opent nog steeds. Gevonden bij codelezing tijdens de vervolginspectie van 31-10-2026.
Author
Owner

Opgepakt. Tak: fix/vervolginspectie-3110. Verwachte reikwijdte: de bestanden die in de oorzaak van dit issue staan, plus een regressietest.

Opgepakt. Tak: fix/vervolginspectie-3110. Verwachte reikwijdte: de bestanden die in de oorzaak van dit issue staan, plus een regressietest.
Author
Owner

Opgepakt. Tak: fix/vervolginspectie-3110. Verwachte reikwijdte: lib/widgets/panels/preview_panel_overview_cards.dart, lib/widgets/dialogs/parts/image_carousel_picker_grid.dart.

Opgepakt. Tak: fix/vervolginspectie-3110. Verwachte reikwijdte: lib/widgets/panels/preview_panel_overview_cards.dart, lib/widgets/dialogs/parts/image_carousel_picker_grid.dart.
Author
Owner

Staat op main in a6b4dc066 (747bbf154, 1ca83e2db). Een klik op een overzichtskaart of beeldminiatuur selecteert meteen. Een vinkvak of sleepgreep krimpt een blok niet eerst in. De dubbelklik op de miniatuur in lib/widgets/slides/slide_thumbnail.dart is bewust niet veranderd.

Staat op main in a6b4dc066 (747bbf154, 1ca83e2db). Een klik op een overzichtskaart of beeldminiatuur selecteert meteen. Een vinkvak of sleepgreep krimpt een blok niet eerst in. De dubbelklik op de miniatuur in lib/widgets/slides/slide_thumbnail.dart is bewust niet veranderd.
Author
Owner

Opgelost op main in a6b4dc066. De zin „een klik selecteert pas na 300 ms“ is gedekt door Listener.onPointerDown op de voorvertoning en de titel in lib/widgets/panels/preview_panel_overview_cards.dart en in lib/widgets/dialogs/parts/image_carousel_picker_grid.dart. Het vinkvak en de sleepgreep vallen daar buiten, zodat een blokselectie intact blijft. De badge op de miniatuur is bewust buiten dit issue gebleven.

Opgelost op main in a6b4dc066. De zin „een klik selecteert pas na 300 ms“ is gedekt door Listener.onPointerDown op de voorvertoning en de titel in lib/widgets/panels/preview_panel_overview_cards.dart en in lib/widgets/dialogs/parts/image_carousel_picker_grid.dart. Het vinkvak en de sleepgreep vallen daar buiten, zodat een blokselectie intact blijft. De badge op de miniatuur is bewust buiten dit issue gebleven.
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#2684
No description provided.