[#1801] "Target verwijderen" haalt altijd de laatste weg, niet die je aanwijst #1864

Closed
opened 2026-08-29 21:59:02 +00:00 by brenno · 0 comments
Owner

Wat er gebeurt

Onder de afbeelding in Afbeeldingsverwijzingen staat n target(s) met de knoppen Target toevoegen en Target verwijderen. Die laatste haalt altijd het laatste doel weg — niet het doel dat je aanwijst, want een doel aanwijzen kan in dit scherm niet. Heb je drie doelen bij één verwijzing en wil je het middelste kwijt, dan moet je eerst het derde weggooien en daarna opnieuw plaatsen.

Herhaalstappen

  1. Dia van het type Bullets + Afbeelding met een afbeelding.
  2. Afbeeldingsverwijzingen → regel kiezen → Toevoegen → klik het eerste doel linksboven.
  3. Target toevoegen → sleep het nieuwe doel naar rechtsonder. Nog een keer → naar het midden.
  4. Probeer het middelste doel te verwijderen. Er is geen manier om te zeggen wélk doel je bedoelt; Target verwijderen pakt het doel dat je als laatste plaatste.

In de code staat de index vast — lib/widgets/editors/callout_editor.dart r. 547–555 geeft callout.targets.length - 1 mee.

Twee dingen die er nog aan vastzitten

  1. De knop zegt niet wat hij weghaalt. De markeringen dragen alleen de letter van de verwijzing en geen volgnummer, dus ook achteraf zie je niet welk doel verdwenen is.
  2. Het pad naar het laatste doel is stil, en vandaag onbereikbaar. _removeTarget (r. 240) vangt targets.length <= 1 af door de hele verwijzing weg te gooien, inclusief de (A) uit de bullettekst. Die tak is nu dood — de knop verschijnt alleen bij meer dan één doel (if (callout.targets.length > 1)) — maar hij komt live zodra er per doel verwijderd kan worden, en dan verdwijnt een verwijzing zonder dat er iets gezegd wordt. In diezelfde tak zit ook een setState binnen een setState en een dubbele _emit().

Wat het zou moeten doen

IMAGE_CALLOUTS.md §6: "Delete removes the selected target and Undo restores it." Dus: een doel is aanwijsbaar met muis én Tab, Delete haalt dát doel weg, en het laatste doel weghalen zegt wat er gebeurt — een melding met Ongedaan maken, geen stilte en geen bevestigingsvenster (undo bestaat al: deck_provider houdt een undo-stapel). Het ontwerp in #1859 doet het zo; deze reparatie hoort daar niet op te wachten.

Wat dit had moeten vangen

test/callout_editor_test.dart raakt de doel-knoppen niet. Twee regressietests:

  • (a) drie doelen, het middelste verwijderen, toetsen dat het middelste weg is en de andere twee onaangeroerd. Dat die test vandaag niet eens te formuleren is, ís de bevinding.
  • (b) het laatste doel verwijderen levert één verwijzing minder én de letter uit de bullettekst, met de melding erbij — in plaats van een stille cascade.

Verwant

Bevinding 12 in #1859.

## Wat er gebeurt Onder de afbeelding in **Afbeeldingsverwijzingen** staat `n target(s)` met de knoppen *Target toevoegen* en *Target verwijderen*. Die laatste haalt altijd het **laatste** doel weg — niet het doel dat je aanwijst, want een doel aanwijzen kan in dit scherm niet. Heb je drie doelen bij één verwijzing en wil je het middelste kwijt, dan moet je eerst het derde weggooien en daarna opnieuw plaatsen. ## Herhaalstappen 1. Dia van het type *Bullets + Afbeelding* met een afbeelding. 2. **Afbeeldingsverwijzingen** → regel kiezen → **Toevoegen** → klik het eerste doel linksboven. 3. **Target toevoegen** → sleep het nieuwe doel naar rechtsonder. Nog een keer → naar het midden. 4. Probeer het middelste doel te verwijderen. Er is geen manier om te zeggen wélk doel je bedoelt; *Target verwijderen* pakt het doel dat je als laatste plaatste. In de code staat de index vast — `lib/widgets/editors/callout_editor.dart` r. 547–555 geeft `callout.targets.length - 1` mee. ## Twee dingen die er nog aan vastzitten 1. **De knop zegt niet wat hij weghaalt.** De markeringen dragen alleen de letter van de verwijzing en geen volgnummer, dus ook achteraf zie je niet welk doel verdwenen is. 2. **Het pad naar het laatste doel is stil, en vandaag onbereikbaar.** `_removeTarget` (r. 240) vangt `targets.length <= 1` af door de hele verwijzing weg te gooien, inclusief de `(A)` uit de bullettekst. Die tak is nu dood — de knop verschijnt alleen bij meer dan één doel (`if (callout.targets.length > 1)`) — maar hij komt live zodra er per doel verwijderd kan worden, en dan verdwijnt een verwijzing zonder dat er iets gezegd wordt. In diezelfde tak zit ook een `setState` binnen een `setState` en een dubbele `_emit()`. ## Wat het zou moeten doen `IMAGE_CALLOUTS.md` §6: *"Delete removes the selected target and Undo restores it."* Dus: een doel is aanwijsbaar met muis én `Tab`, `Delete` haalt dát doel weg, en het laatste doel weghalen zegt wat er gebeurt — een melding met *Ongedaan maken*, geen stilte en geen bevestigingsvenster (undo bestaat al: `deck_provider` houdt een undo-stapel). Het ontwerp in #1859 doet het zo; deze reparatie hoort daar niet op te wachten. ## Wat dit had moeten vangen `test/callout_editor_test.dart` raakt de doel-knoppen niet. Twee regressietests: - **(a)** drie doelen, het middelste verwijderen, toetsen dat het middelste weg is en de andere twee onaangeroerd. Dat die test vandaag niet eens te formuleren is, ís de bevinding. - **(b)** het laatste doel verwijderen levert één verwijzing minder én de letter uit de bullettekst, met de melding erbij — in plaats van een stille cascade. ## Verwant Bevinding 12 in #1859.
brenno 2026-08-31 07:00:44 +00:00
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#1864
No description provided.