[#1801] Het scherm Afbeeldingsverwijzingen is niet op het werk ingedeeld #1859

Closed
opened 2026-08-29 21:36:23 +00:00 by brenno · 4 comments
Owner

Context

Het scherm is CalloutEditorDialog (lib/widgets/editors/callout_editor.dart), te openen met de knop Afbeeldingsverwijzingen onder de afbeelding in de editor van een Bullets + Afbeelding-dia. Het is het auteursscherm uit #1801 / docs/design/IMAGE_CALLOUTS.md §6.

De melding: de opmaak is niet op gebruik samengesteld — in het bijzonder de plaatsing van Pins / Gebieden / Pijlen en van Alles tonen / Stap-voor-stap.

Beoordeeld op origin/main 87e9edc4, uit de code. Niet met een draaiende app: #1847 en #1848 hebben de app-toets in handen en die draait serieel.

Wat er nu staat

┌ Afbeeldingsverwijzingen ─────────────────────────────────────┐
│ regels (300 px vast) │ [Pins][Gebieden][Pijlen]              │
│  (A) eerste regel    │ [Alles tonen][Stap-voor-stap]         │
│  (B) tweede regel    │ ┌───────────────────────────────────┐ │
│      derde  [Toev.]  │ │  afbeelding, klik = doel plaatsen │ │
│                      │ └───────────────────────────────────┘ │
│                      │ Beschrijving (voor schermlezer)  0/200│
│                      │ 1 target(s)   [+ Target toevoegen]    │
│                                                     [Sluiten]│
└──────────────────────────────────────────────────────────────┘

Bevindingen — indeling

  1. De twee knoppenrijen dragen geen label (r. 352, 381). "Pins | Gebieden | Pijlen" en "Alles tonen | Stap-voor-stap" staan kaal boven elkaar en lezen samen als één rij van vijf keuzes. Niets zegt dat de eerste de vórm van élke markering op deze dia zet, en dat de tweede pas iets doet tijdens het presenteren.
  2. Ze staan op de plek van het werk. Twee rijen segmented buttons met marge kosten ~90 px van een vast venster van 600 px, permanent, en duwen het beeld — het enige waar je op klikt — omlaag. Het zijn bovendien dia-brede instellingen, midden in een werkvlak dat over één verwijzing gaat.
  3. De volgorde volgt de taak niet. De taak is: regel kiezen → vorm kiezen → op het beeld klikken → beschrijven. De onthulstand is een presentatie-eigenschap en staat precies tussen "welke vorm" en "waar", dus in het pad van het oog.
  4. Ze staan er ook als er niets te kiezen valt. Zonder selectie toont het werkvlak alleen "Selecteer een bullet om een reference te plaatsen" (r. 406), terwijl de vijf knoppen erboven gewoon actief zijn — je kunt de vorm zetten van iets wat er nog niet is.
  5. Het werkvlak verspringt. Beschrijving en doelknoppen (r. 520–556) zitten ónder het beeld en verschijnen pas bij selectie; "Target toevoegen" en "Target verwijderen" komen en gaan op grond van tellingen (1 en 8). Beeldhoogte en knoppenrij wisselen dus tijdens het werk — precies wat je niet wilt terwijl je een speld op een pixel probeert te zetten.
  6. Vast 900 × 600, zonder klem op het kijkvenster (r. 281–282; de linkerkolom staat vast op 300, r. 287). showEmbedEditorDialog klemt wél op min(760, breedte − 96). Op 1366 × 768, in een klein venster of bij tekstvergroting loopt dit venster over.
  7. Alleen de gekozen verwijzing tekent markeringen (_buildImageWithMarkers). Je ziet de andere spelden niet terwijl je plaatst, dus overlap merk je pas op de dia.
  8. De 26-grens is stil: "Toevoegen" gaat uit bij 26 verwijzingen (r. 327), zonder een woord waarom.
  9. Toetsenbord — te toetsen. §6 zegt "Every function has a keyboard path and a non-drag path. Each target is focusable and named by reference and target number." In dit bestand staat geen Focus, Shortcuts of Semantics; plaatsen en verslepen gaan alleen via GestureDetector. Toetsen tegen wat #1844 heeft afgedekt voordat hier iets aan verandert.

Bevindingen — bewoording

  1. Half Nederlands, half Engels, en drie namen voor twee dingen: de knop heet Afbeeldingsverwijzingen, in het scherm heet hetzelfde "reference" (r. 320, 406), "target" (r. 537, 545, 550) en "bullet" (r. 406). Het formaatontwerp noemt ze verwijzing en doel. "target(s)" doet bovendien geen enkelvoud/meervoud.

Los van de opmaak: twee gedragsfouten in hetzelfde scherm

  1. De cursor springt naar het eind van de beschrijving. Regel 527 maakt in build() een nieuwe TextEditingController met de selectie aan het eind. Elke toetsaanslag gaat via setState → nieuwe controller → cursor achteraan. Midden in een zin een woord verbeteren kan dus niet; de controller wordt ook nooit disposed.
  2. "Target verwijderen" verwijdert altijd het láátste doel (r. 551–554), niet het doel dat je aanwijst. En gaat het enige doel weg, dan verdwijnt de hele verwijzing inclusief de (A) in de regel, zonder waarschuwing. §6 vraagt: "Delete removes the selected target and Undo restores it."

Voorstel

  • De dia-brede keuzes (vorm, onthullen) uit het werkvlak halen en labelen — twee benoemde velden ("Vorm van de markering", "Tijdens presenteren"), op één rij onder de titel of onderaan bij de knoppen, niet tussen de regel en het beeld.
  • Het beeld het grootste en stabielste vlak van het venster maken: beschrijving en doelknoppen op een vaste plek, uitgeschakeld zolang er niets geselecteerd is, zodat er niets verspringt.
  • De maat klemmen op het kijkvenster, zoals showEmbedEditorDialog dat doet.
  • Eén woordenpaar overal: verwijzing en doel, en regel voor de bullet.
  • Alle markeringen van de dia tonen, de gekozen geaccentueerd.

Acceptatie

  • Vorm- en onthulkeuze staan gelabeld en buiten het werkvlak
  • Het beeldvlak verspringt niet meer bij selecteren of deselecteren
  • Het venster past op 1366 × 768 en bij tekstvergroting, zonder overflow
  • Alleen Nederlandse termen in dit scherm: verwijzing / doel / regel
  • De cursor blijft staan waar je hem zet in het beschrijvingsveld, met regressietest
  • "Doel verwijderen" haalt het aangewezen doel weg; het laatste weghalen vraagt bevestiging
  • Widget-test die de indeling vastlegt; de gebruikerskant haakt aan #1848

Verwant

#1801 (de functie zelf), #1848 (nieuwkomer-test — een deel van deze bevindingen hoort daar ook thuis), #1854 (uitsnede in de plaatsingsstage), #1853, #1856. Geen overlap met #1855 en #1857 (export).

## Context Het scherm is `CalloutEditorDialog` (`lib/widgets/editors/callout_editor.dart`), te openen met de knop **Afbeeldingsverwijzingen** onder de afbeelding in de editor van een *Bullets + Afbeelding*-dia. Het is het auteursscherm uit #1801 / `docs/design/IMAGE_CALLOUTS.md` §6. De melding: de opmaak is niet op gebruik samengesteld — in het bijzonder de plaatsing van **Pins / Gebieden / Pijlen** en van **Alles tonen / Stap-voor-stap**. Beoordeeld op `origin/main` 87e9edc4, uit de code. Niet met een draaiende app: #1847 en #1848 hebben de app-toets in handen en die draait serieel. ## Wat er nu staat ``` ┌ Afbeeldingsverwijzingen ─────────────────────────────────────┐ │ regels (300 px vast) │ [Pins][Gebieden][Pijlen] │ │ (A) eerste regel │ [Alles tonen][Stap-voor-stap] │ │ (B) tweede regel │ ┌───────────────────────────────────┐ │ │ derde [Toev.] │ │ afbeelding, klik = doel plaatsen │ │ │ │ └───────────────────────────────────┘ │ │ │ Beschrijving (voor schermlezer) 0/200│ │ │ 1 target(s) [+ Target toevoegen] │ │ [Sluiten]│ └──────────────────────────────────────────────────────────────┘ ``` ## Bevindingen — indeling 1. **De twee knoppenrijen dragen geen label** (r. 352, 381). "Pins | Gebieden | Pijlen" en "Alles tonen | Stap-voor-stap" staan kaal boven elkaar en lezen samen als één rij van vijf keuzes. Niets zegt dat de eerste de vórm van élke markering op deze dia zet, en dat de tweede pas iets doet tijdens het presenteren. 2. **Ze staan op de plek van het werk.** Twee rijen segmented buttons met marge kosten ~90 px van een vast venster van 600 px, permanent, en duwen het beeld — het enige waar je op klikt — omlaag. Het zijn bovendien dia-brede instellingen, midden in een werkvlak dat over één verwijzing gaat. 3. **De volgorde volgt de taak niet.** De taak is: regel kiezen → vorm kiezen → op het beeld klikken → beschrijven. De onthulstand is een presentatie-eigenschap en staat precies tussen "welke vorm" en "waar", dus in het pad van het oog. 4. **Ze staan er ook als er niets te kiezen valt.** Zonder selectie toont het werkvlak alleen "Selecteer een bullet om een reference te plaatsen" (r. 406), terwijl de vijf knoppen erboven gewoon actief zijn — je kunt de vorm zetten van iets wat er nog niet is. 5. **Het werkvlak verspringt.** Beschrijving en doelknoppen (r. 520–556) zitten ónder het beeld en verschijnen pas bij selectie; "Target toevoegen" en "Target verwijderen" komen en gaan op grond van tellingen (1 en 8). Beeldhoogte en knoppenrij wisselen dus tijdens het werk — precies wat je niet wilt terwijl je een speld op een pixel probeert te zetten. 6. **Vast 900 × 600, zonder klem op het kijkvenster** (r. 281–282; de linkerkolom staat vast op 300, r. 287). `showEmbedEditorDialog` klemt wél op `min(760, breedte − 96)`. Op 1366 × 768, in een klein venster of bij tekstvergroting loopt dit venster over. 7. **Alleen de gekozen verwijzing tekent markeringen** (`_buildImageWithMarkers`). Je ziet de andere spelden niet terwijl je plaatst, dus overlap merk je pas op de dia. 8. **De 26-grens is stil**: "Toevoegen" gaat uit bij 26 verwijzingen (r. 327), zonder een woord waarom. 9. **Toetsenbord — te toetsen.** §6 zegt "Every function has a keyboard path and a non-drag path. Each target is focusable and named by reference and target number." In dit bestand staat geen `Focus`, `Shortcuts` of `Semantics`; plaatsen en verslepen gaan alleen via `GestureDetector`. Toetsen tegen wat #1844 heeft afgedekt voordat hier iets aan verandert. ## Bevindingen — bewoording 10. Half Nederlands, half Engels, en drie namen voor twee dingen: de knop heet **Afbeeldingsverwijzingen**, in het scherm heet hetzelfde "reference" (r. 320, 406), "target" (r. 537, 545, 550) en "bullet" (r. 406). Het formaatontwerp noemt ze *verwijzing* en *doel*. "target(s)" doet bovendien geen enkelvoud/meervoud. ## Los van de opmaak: twee gedragsfouten in hetzelfde scherm 11. **De cursor springt naar het eind van de beschrijving.** Regel 527 maakt in `build()` een nieuwe `TextEditingController` met de selectie aan het eind. Elke toetsaanslag gaat via `setState` → nieuwe controller → cursor achteraan. Midden in een zin een woord verbeteren kan dus niet; de controller wordt ook nooit `dispose`d. 12. **"Target verwijderen" verwijdert altijd het láátste doel** (r. 551–554), niet het doel dat je aanwijst. En gaat het enige doel weg, dan verdwijnt de hele verwijzing inclusief de `(A)` in de regel, zonder waarschuwing. §6 vraagt: "Delete removes the selected target and Undo restores it." ## Voorstel - De dia-brede keuzes (vorm, onthullen) uit het werkvlak halen en labelen — twee benoemde velden ("Vorm van de markering", "Tijdens presenteren"), op één rij onder de titel of onderaan bij de knoppen, niet tussen de regel en het beeld. - Het beeld het grootste en stabielste vlak van het venster maken: beschrijving en doelknoppen op een vaste plek, uitgeschakeld zolang er niets geselecteerd is, zodat er niets verspringt. - De maat klemmen op het kijkvenster, zoals `showEmbedEditorDialog` dat doet. - Eén woordenpaar overal: *verwijzing* en *doel*, en *regel* voor de bullet. - Alle markeringen van de dia tonen, de gekozen geaccentueerd. ## Acceptatie - [ ] Vorm- en onthulkeuze staan gelabeld en buiten het werkvlak - [ ] Het beeldvlak verspringt niet meer bij selecteren of deselecteren - [ ] Het venster past op 1366 × 768 en bij tekstvergroting, zonder overflow - [ ] Alleen Nederlandse termen in dit scherm: verwijzing / doel / regel - [ ] De cursor blijft staan waar je hem zet in het beschrijvingsveld, met regressietest - [ ] "Doel verwijderen" haalt het aangewezen doel weg; het laatste weghalen vraagt bevestiging - [ ] Widget-test die de indeling vastlegt; de gebruikerskant haakt aan #1848 ## Verwant #1801 (de functie zelf), #1848 (nieuwkomer-test — een deel van deze bevindingen hoort daar ook thuis), #1854 (uitsnede in de plaatsingsstage), #1853, #1856. Geen overlap met #1855 en #1857 (export).
Author
Owner

Ontwerpvoorstel — het venster verdwijnt

Besluit van de beheerder: niet het venster herordenen maar de mooiste oplossing nemen. Die is: aanwijzen op de dia zelf, in het voorbeeldpaneel, zonder dialoogvenster. Hieronder het ontwerp. Er is nog geen regel code aan veranderd.

Dit wijkt af van IMAGE_CALLOUTS.md §6, dat een aparte stage voorschrijft ("opening a stage that shows the real layout and crop"). Wordt dit gebouwd, dan gaat §6 mee — het ontwerpdocument is de bron, dus het mag niet stilzwijgend achterblijven.

Waarom die knoppen in de weg staan (diagnose)

  1. Het venster vraagt eerst twee dia-instellingen en pas daarna het werk. Vorm en Presenteren gelden voor de hele dia; het plaatsen gaat over één verwijzing. Ze staan bovenaan omdat daar ruimte was, niet omdat de taak daar begint.
  2. De vormknop doet twee dingen tegelijk. Hij zet hoe de dia tekent én wat je gebaar oplevert: in Pins doet slepen niets (onPanStart keert terug), in Gebieden doet klikken niets (onTapUp keert terug). Daardoor moet hij wel in het werkvlak staan. Maar §3.1 zegt dat een dia punten en gebieden in élke stand mag mengen — de vorm is een tekenstijl, geen belofte over de geometrie. Die koppeling is zelfgemaakt.
  3. Een tweede afbeelding naast de echte dia is een tweede waarheid. Zodra de stage een andere uitsnede toont dan de dia (#1854), plaats je een verwijzing die er op de dia niet staat. Geen enkele hoeveelheid herordening haalt dat weg; één werkvlak wel.

Stappen van "ik wil deze regel aanwijzen" tot klaar. Nu: venster openen → regel zoeken → Toevoegen → er verschijnt een speld in het midden die je niet hebt geplaatst → op de goede plek klikken → beschrijving typen. Vijf, met een tussenstand die niet klopt. In dit ontwerp: aanwijs-stand aan → regel kiezen → klikken → beschrijving typen. Vier, en niets staat er verkeerd tussenin.

De reis

Buiten de aanwijs-stand draagt elke regel in de editor zijn letter als klein rondje vooraan: (A). Zo zie je zonder iets te openen welke regels iets aanwijzen — en welke niet.

Aanzetten. De knop onder de afbeelding heet Aanwijzen op de afbeelding en is een schakelaar, geen venster. Ook bereikbaar via het commandopalet.

In de aanwijs-stand wordt de dia in het voorbeeldpaneel het werkvlak — de dia zoals hij is, met alle markeringen erop, de gekozen opgelicht en de rest gedimd. De slidestrook klapt in tot smalle duimnagels zodat de dia zo groot mogelijk wordt; het editorpaneel blijft staan, want daar staan de regels. Boven de dia één smalle balk:

Aanwijzen — klik om (C) te plaatsen, sleep voor een gebied · Tonen als: [Speld] [Gebied] [Pijl] · Hele afbeelding tonen · [Klaar]

Aanwijzen. Klikken plaatst een punt, slepen tekent een gebied. Het gebaar zegt het al, dus de vormknop bepaalt niet langer wat je gebaar doet — hij bepaalt alleen hoe de dia het tekent, en dat zie je meteen omdat je op de dia werkt. Bij het plaatsen krijgt de regel zijn letter, in de lijst én in de tekst van de bullet. Geen aparte Toevoegen-knop, dus ook geen verwijzing die al bestaat voordat je hem hebt geplaatst.

Tweerichtingsverkeer. Klik op een markering op de dia en de bijbehorende regel wordt gekozen. Dat kan vandaag helemaal niet, en het is de eigenlijke winst van op de dia werken.

Beschrijven. Het veld staat ónder de gekozen regel in het editorpaneel, waar de verwijzing bij hoort:

Wat wijst (A) aan? · hint: de print met het display · eronder klein: Voor wie de afbeelding niet ziet.

De teller verschijnt pas vanaf 150 van de 200 tekens; 0/200 bij een leeg veld is ruis.

Nog een plek. Knop bij de gekozen regel: Nog een plek aanwijzen. Die plaatst niets, hij scherpt de volgende klik: de aanwijzer wordt een kruis en de balk leest Klik waar (A) óók naar wijst — Esc stopt. Nooit geometrie neerzetten die de auteur niet heeft aangewezen; dat is §2.4 doorgetrokken naar de editor.

Weghalen. Markering aanwijzen en Delete, of het kruisje erop. Gaat de laatste plek weg, dan verdwijnt de verwijzing en de (A) uit de regel — met een melding onderin, niet met een dialoog: Verwijzing (B) verwijderd. [Ongedaan maken]. De dekprovider heeft een undo-stapel, dus dit valt onder "rem alleen op het onomkeerbare". Een bevestigingsvenster leert mensen hier alleen wegklikken.

Klaar of Esc verlaat de stand. Er valt niets te annuleren: elke handeling stond al op de dia.

Wat er verdwijnt

  • Het dialoogvenster zelf — en daarmee de vaste 900 × 600, de vaste kolom van 300 px, het verspringende beeldvlak en de vraag waar die vijf knoppen moeten staan.
  • Alles tonen / Stap-voor-stap gaat naar de regels. Dat is geen aanwijs-instelling maar een presenteer-instelling over de regels (§7: elke klik onthult één regel plús zijn markeringen). Hij hoort bij de schakelaars die er al staan — Doornummeren vanaf vorige slide, Voortgangsgrafiek tonen — als Regels één voor één tonen tijdens presenteren, en verschijnt pas zodra de dia verwijzingen heeft: PresentationStepPlan doet er tot dan niets mee (callouts.isNotEmpty).
  • Toevoegen, Target toevoegen, Target verwijderen, de teller 1 target(s) en de zin Selecteer een bullet om een reference te plaatsen — allemaal vervangen door direct aanwijzen en één hintregel.
  • De gebaar-grendel op de vormkeuze.

Woorden

Drie namen voor twee dingen worden er twee: verwijzing (de letter bij een regel), plek (waar hij naar wijst, punt of gebied), regel (de bullet). "Reference", "target" en "bullet" blijven de woorden van het ontwerpdocument en van de code; ze horen niet op het scherm. Vormen enkelvoud en Nederlands: Speld · Gebied · Pijl. Standaarden ongewijzigd — speld en alles tegelijk — want dat is de stand die het minst belooft.

Toetsenbord

§6 eist een toetsenbordpad voor elke functie; in callout_editor.dart staat geen enkele Focus of Semantics. In dit ontwerp:

  • Tab loopt door de regels; Enter scherpt de plaatsing, een tweede Enter zet de plek in het midden van de dia, Esc stopt.
  • Pijltjestoetsen verplaatsen de gekozen plek met 0,5 % per druk, met Shift 5 %. Bij een gebied verplaatst Alt+pijl de rand in plaats van het geheel.
  • Delete haalt de aangewezen plek weg.
  • Elke markering is focusbaar en heet: Verwijzing A, plek 1 van 2, punt op 62 procent van links, 28 procent van boven.

De randen die nu stil zijn

  • Buiten de uitsnede. Hele afbeelding tonen laat de volledige foto zien met het dia-kader erin getekend. Wat erbuiten valt is gedimd zichtbaar plus een zin: (C) valt buiten de uitsnede en is op de dia niet te zien. Dat raakt #1853 en #1854 in het ontwerp in plaats van in de reparatie — #1854 kan zelfs helemaal vervallen, want er is geen tweede uitsnede meer.
  • De 26-grens. Vanaf 24 verwijzingen: Nog 2 van 26. Op 26 zegt de balk waaróm er niets meer bij kan, in plaats van een knop die grijs wordt.
  • Lange talen. Geen vaste breedtes; de balk breekt af naar twee regels in plaats van te knijpen. Wat in het Nederlands acht tekens is, is in het Fins twintig.

Wat het kost

De aanwijs-stand raakt het voorbeeldpaneel en het editorpaneel, plus een standvlag die de presentatie-oppervlakken moeten negeren. callout_overlay.dart blijft een tekenaar; de bediening komt als een laag erbóven, en alleen in de editor. Geen nieuwe velden op Slide, dus geen nieuwe collab-op en geen formaatwijziging — alles wat dit ontwerp bewaart, bestaat al. Wel: ~12 nieuwe l10n.d('…') × 31 vertalingen, en §6 van IMAGE_CALLOUTS.md moet herschreven worden.

Wat dit níet oplost

De cursorsprong in het beschrijvingsveld (bevinding 11) en "verwijder altijd de laatste" (bevinding 12) zijn gedragsfouten, geen indelingsfouten. Ze blijven ook in dit ontwerp bestaan tot ze apart gerepareerd worden — het beschrijvingsveld verhuist immers alleen van plek.

## Ontwerpvoorstel — het venster verdwijnt Besluit van de beheerder: niet het venster herordenen maar de mooiste oplossing nemen. Die is: **aanwijzen op de dia zelf**, in het voorbeeldpaneel, zonder dialoogvenster. Hieronder het ontwerp. Er is nog geen regel code aan veranderd. **Dit wijkt af van `IMAGE_CALLOUTS.md` §6**, dat een aparte stage voorschrijft ("opening a stage that shows the real layout and crop"). Wordt dit gebouwd, dan gaat §6 mee — het ontwerpdocument is de bron, dus het mag niet stilzwijgend achterblijven. ### Waarom die knoppen in de weg staan (diagnose) 1. **Het venster vraagt eerst twee dia-instellingen en pas daarna het werk.** *Vorm* en *Presenteren* gelden voor de hele dia; het plaatsen gaat over één verwijzing. Ze staan bovenaan omdat daar ruimte was, niet omdat de taak daar begint. 2. **De vormknop doet twee dingen tegelijk.** Hij zet hoe de dia tekent én wat je gebaar oplevert: in *Pins* doet slepen niets (`onPanStart` keert terug), in *Gebieden* doet klikken niets (`onTapUp` keert terug). Daardoor moet hij wel in het werkvlak staan. Maar §3.1 zegt dat een dia punten en gebieden in élke stand mag mengen — de vorm is een tekenstijl, geen belofte over de geometrie. Die koppeling is zelfgemaakt. 3. **Een tweede afbeelding naast de echte dia is een tweede waarheid.** Zodra de stage een andere uitsnede toont dan de dia (#1854), plaats je een verwijzing die er op de dia niet staat. Geen enkele hoeveelheid herordening haalt dat weg; één werkvlak wel. Stappen van "ik wil deze regel aanwijzen" tot klaar. Nu: venster openen → regel zoeken → *Toevoegen* → er verschijnt een speld in het midden die je niet hebt geplaatst → op de goede plek klikken → beschrijving typen. **Vijf, met een tussenstand die niet klopt.** In dit ontwerp: aanwijs-stand aan → regel kiezen → klikken → beschrijving typen. **Vier, en niets staat er verkeerd tussenin.** ### De reis **Buiten de aanwijs-stand** draagt elke regel in de editor zijn letter als klein rondje vooraan: `(A)`. Zo zie je zonder iets te openen welke regels iets aanwijzen — en welke niet. **Aanzetten.** De knop onder de afbeelding heet `Aanwijzen op de afbeelding` en is een schakelaar, geen venster. Ook bereikbaar via het commandopalet. **In de aanwijs-stand** wordt de dia in het voorbeeldpaneel het werkvlak — de dia zoals hij is, met alle markeringen erop, de gekozen opgelicht en de rest gedimd. De slidestrook klapt in tot smalle duimnagels zodat de dia zo groot mogelijk wordt; het editorpaneel blijft staan, want daar staan de regels. Boven de dia één smalle balk: > `Aanwijzen — klik om (C) te plaatsen, sleep voor een gebied` · `Tonen als: [Speld] [Gebied] [Pijl]` · `Hele afbeelding tonen` · `[Klaar]` **Aanwijzen.** Klikken plaatst een punt, slepen tekent een gebied. Het gebaar zegt het al, dus de vormknop bepaalt niet langer wat je gebaar doet — hij bepaalt alleen hoe de dia het tekent, en dat zie je meteen omdat je op de dia werkt. Bij het plaatsen krijgt de regel zijn letter, in de lijst én in de tekst van de bullet. Geen aparte *Toevoegen*-knop, dus ook geen verwijzing die al bestaat voordat je hem hebt geplaatst. **Tweerichtingsverkeer.** Klik op een markering op de dia en de bijbehorende regel wordt gekozen. Dat kan vandaag helemaal niet, en het is de eigenlijke winst van op de dia werken. **Beschrijven.** Het veld staat ónder de gekozen regel in het editorpaneel, waar de verwijzing bij hoort: > `Wat wijst (A) aan?` · hint: `de print met het display` · eronder klein: `Voor wie de afbeelding niet ziet.` De teller verschijnt pas vanaf 150 van de 200 tekens; `0/200` bij een leeg veld is ruis. **Nog een plek.** Knop bij de gekozen regel: `Nog een plek aanwijzen`. Die plaatst niets, hij scherpt de volgende klik: de aanwijzer wordt een kruis en de balk leest `Klik waar (A) óók naar wijst — Esc stopt`. Nooit geometrie neerzetten die de auteur niet heeft aangewezen; dat is §2.4 doorgetrokken naar de editor. **Weghalen.** Markering aanwijzen en `Delete`, of het kruisje erop. Gaat de laatste plek weg, dan verdwijnt de verwijzing en de `(A)` uit de regel — met een melding onderin, niet met een dialoog: `Verwijzing (B) verwijderd. [Ongedaan maken]`. De dekprovider heeft een undo-stapel, dus dit valt onder "rem alleen op het onomkeerbare". Een bevestigingsvenster leert mensen hier alleen wegklikken. **Klaar** of `Esc` verlaat de stand. Er valt niets te annuleren: elke handeling stond al op de dia. ### Wat er verdwijnt - **Het dialoogvenster zelf** — en daarmee de vaste 900 × 600, de vaste kolom van 300 px, het verspringende beeldvlak en de vraag waar die vijf knoppen moeten staan. - **`Alles tonen / Stap-voor-stap` gaat naar de regels.** Dat is geen aanwijs-instelling maar een presenteer-instelling over de regels (§7: elke klik onthult één regel plús zijn markeringen). Hij hoort bij de schakelaars die er al staan — `Doornummeren vanaf vorige slide`, `Voortgangsgrafiek tonen` — als `Regels één voor één tonen tijdens presenteren`, en verschijnt pas zodra de dia verwijzingen heeft: `PresentationStepPlan` doet er tot dan niets mee (`callouts.isNotEmpty`). - **`Toevoegen`, `Target toevoegen`, `Target verwijderen`, de teller `1 target(s)`** en de zin `Selecteer een bullet om een reference te plaatsen` — allemaal vervangen door direct aanwijzen en één hintregel. - **De gebaar-grendel** op de vormkeuze. ### Woorden Drie namen voor twee dingen worden er twee: **verwijzing** (de letter bij een regel), **plek** (waar hij naar wijst, punt of gebied), **regel** (de bullet). "Reference", "target" en "bullet" blijven de woorden van het ontwerpdocument en van de code; ze horen niet op het scherm. Vormen enkelvoud en Nederlands: *Speld · Gebied · Pijl*. Standaarden ongewijzigd — speld en alles tegelijk — want dat is de stand die het minst belooft. ### Toetsenbord §6 eist een toetsenbordpad voor elke functie; in `callout_editor.dart` staat geen enkele `Focus` of `Semantics`. In dit ontwerp: - `Tab` loopt door de regels; `Enter` scherpt de plaatsing, een tweede `Enter` zet de plek in het midden van de dia, `Esc` stopt. - Pijltjestoetsen verplaatsen de gekozen plek met 0,5 % per druk, met `Shift` 5 %. Bij een gebied verplaatst `Alt`+pijl de rand in plaats van het geheel. - `Delete` haalt de aangewezen plek weg. - Elke markering is focusbaar en heet: `Verwijzing A, plek 1 van 2, punt op 62 procent van links, 28 procent van boven`. ### De randen die nu stil zijn - **Buiten de uitsnede.** `Hele afbeelding tonen` laat de volledige foto zien met het dia-kader erin getekend. Wat erbuiten valt is gedimd zichtbaar plus een zin: `(C) valt buiten de uitsnede en is op de dia niet te zien.` Dat raakt #1853 en #1854 in het ontwerp in plaats van in de reparatie — #1854 kan zelfs helemaal vervallen, want er is geen tweede uitsnede meer. - **De 26-grens.** Vanaf 24 verwijzingen: `Nog 2 van 26.` Op 26 zegt de balk waaróm er niets meer bij kan, in plaats van een knop die grijs wordt. - **Lange talen.** Geen vaste breedtes; de balk breekt af naar twee regels in plaats van te knijpen. Wat in het Nederlands acht tekens is, is in het Fins twintig. ### Wat het kost De aanwijs-stand raakt het voorbeeldpaneel en het editorpaneel, plus een standvlag die de presentatie-oppervlakken moeten negeren. `callout_overlay.dart` blijft een tekenaar; de bediening komt als een laag erbóven, en alleen in de editor. Geen nieuwe velden op `Slide`, dus geen nieuwe collab-op en geen formaatwijziging — alles wat dit ontwerp bewaart, bestaat al. Wel: ~12 nieuwe `l10n.d('…')` × 31 vertalingen, en §6 van `IMAGE_CALLOUTS.md` moet herschreven worden. ### Wat dit níet oplost De cursorsprong in het beschrijvingsveld (bevinding 11) en "verwijder altijd de laatste" (bevinding 12) zijn gedragsfouten, geen indelingsfouten. Ze blijven ook in dit ontwerp bestaan tot ze apart gerepareerd worden — het beschrijvingsveld verhuist immers alleen van plek.
Author
Owner

Klikbare mockup

De aanwijs-stand als werkende tekening: https://claude.ai/code/artifact/0956aa21-ad46-4c71-a304-5bab44ac1215

(De pagina staat op de account van de beheerder en is privé tot hij via het deelmenu gedeeld wordt.)

Wat er te doen is, en waar het ontwerp op te toetsen valt:

  • Kies een regel, klik op de afbeelding. De letter ontstaat bij het plaatsen — niet ervoor. Er bestaat geen moment waarop er een markering staat die je niet hebt neergezet.
  • Slepen tekent een gebied, zonder eerst een stand om te zetten. Dat is de knoop uit bevinding 2: het gebaar zegt al wat je bedoelt, dus de vormkeuze hoeft niet meer vóór het werk te staan.
  • Klik op een markering en zijn regel wordt gekozen. Vandaag kan dat niet.
  • Tonen als Speld / Gebied / Pijl verandert alleen de tekening, en volgt de matrix van §3.1: een gebied in speld-stand toont de speld op het middelpunt en tekent het kader niet, en een pijl eindigt op de rand van een gebied, vanaf de rechterrand van de regel (§5).
  • Hele afbeelding tonen legt het dia-kader over de volledige foto. Alles wat daarbuiten valt krijgt een zin in plaats van stilte — dat is #1853, en omdat er nog maar één werkvlak is, is er ook geen tweede uitsnede meer om van af te wijken (#1854).
  • Toetsenbord: Tab naar een markering, pijltjes verplaatsen (met Shift grover), Delete verwijdert, Esc verlaat de stand. Elke markering heeft een naam voor de schermlezer: Verwijzing A, plek 1 van 2, punt op 66 procent van links, 24 procent van boven.
  • Verwijderen geeft een melding met Ongedaan maken, geen bevestigingsvenster.

Rechts in het paneel staat ook waar Regels één voor één tonen tijdens presenteren naartoe verhuist, en de knop die de stand aan- en uitzet.

Wat de mockup niet is: de markeringen zijn met SVG nagebouwd, niet met callout_overlay.dart. De twee-tonige rand en de matrix van §3.1 zijn nagemaakt om het ontwerp te kunnen beoordelen; het echte tekenwerk blijft van de overlay. De maten van het venster, de kolommen en de dia zijn indicatief.

## Klikbare mockup De aanwijs-stand als werkende tekening: **https://claude.ai/code/artifact/0956aa21-ad46-4c71-a304-5bab44ac1215** *(De pagina staat op de account van de beheerder en is privé tot hij via het deelmenu gedeeld wordt.)* Wat er te doen is, en waar het ontwerp op te toetsen valt: - **Kies een regel, klik op de afbeelding.** De letter ontstaat bij het plaatsen — niet ervoor. Er bestaat geen moment waarop er een markering staat die je niet hebt neergezet. - **Slepen tekent een gebied**, zonder eerst een stand om te zetten. Dat is de knoop uit bevinding 2: het gebaar zegt al wat je bedoelt, dus de vormkeuze hoeft niet meer vóór het werk te staan. - **Klik op een markering** en zijn regel wordt gekozen. Vandaag kan dat niet. - **Tonen als Speld / Gebied / Pijl** verandert alleen de tekening, en volgt de matrix van §3.1: een gebied in speld-stand toont de speld op het middelpunt en tekent het kader niet, en een pijl eindigt op de rand van een gebied, vanaf de rechterrand van de regel (§5). - **Hele afbeelding tonen** legt het dia-kader over de volledige foto. Alles wat daarbuiten valt krijgt een zin in plaats van stilte — dat is #1853, en omdat er nog maar één werkvlak is, is er ook geen tweede uitsnede meer om van af te wijken (#1854). - **Toetsenbord**: `Tab` naar een markering, pijltjes verplaatsen (met `Shift` grover), `Delete` verwijdert, `Esc` verlaat de stand. Elke markering heeft een naam voor de schermlezer: *Verwijzing A, plek 1 van 2, punt op 66 procent van links, 24 procent van boven*. - **Verwijderen** geeft een melding met *Ongedaan maken*, geen bevestigingsvenster. Rechts in het paneel staat ook waar `Regels één voor één tonen tijdens presenteren` naartoe verhuist, en de knop die de stand aan- en uitzet. Wat de mockup **niet** is: de markeringen zijn met SVG nagebouwd, niet met `callout_overlay.dart`. De twee-tonige rand en de matrix van §3.1 zijn nagemaakt om het ontwerp te kunnen beoordelen; het echte tekenwerk blijft van de overlay. De maten van het venster, de kolommen en de dia zijn indicatief.
Author
Owner

Bevinding 11 en 12 zijn losgetrokken: het zijn gedragsfouten, geen indelingsfouten, en ze blijven ook in het nieuwe ontwerp staan.

  • #1863 — de beschrijving is niet middenin te corrigeren (controller in build())
  • #1864 — "Target verwijderen" haalt altijd de laatste weg, niet die je aanwijst

Dit issue houdt daarmee alleen nog de indeling en de bewoording van het scherm.

Bevinding 11 en 12 zijn losgetrokken: het zijn gedragsfouten, geen indelingsfouten, en ze blijven ook in het nieuwe ontwerp staan. - #1863 — de beschrijving is niet middenin te corrigeren (controller in `build()`) - #1864 — "Target verwijderen" haalt altijd de laatste weg, niet die je aanwijst Dit issue houdt daarmee alleen nog de indeling en de bewoording van het scherm.
Author
Owner

Kruisverwijzing: #1860 beschrijft hetzelfde scherm vanuit een nieuwkomer die het draaiend probeerde. Twee dingen die jouw code-lezing bevestigen, met wat het in de praktijk oplevert:

  • Bevinding 1-4 (de kale knoppenrijen). De tester las de vormkeuze als "stelt de geselecteerde verwijzing in". Dat is hij niet: met een verwijzing geselecteerd gebeurt er niets zichtbaars, daarna bepaalt hij wat de vólgende "Toevoegen" maakt, en hij is dia-breed en herstijlt met terugwerkende kracht alles. Na een wissel naar Pijlen werden een zorgvuldig getekend gebied én alle spelden pijlen. Eén knop, drie betekenissen.
  • Bevinding 4 (knoppen actief zonder selectie). De dialoog opent met een grotendeels leeg vlak en de zin "Selecteer een bullet om een reference te plaatsen", terwijl bullettekst aanklikken niets doet en het enige element "Toevoegen" heet. Eerste gedachte van de tester: "is dit stuk?"

Daarbij één ding dat je uit de code niet kon zien: "Toevoegen" plaatst de markering zelf al, op 0.500/0.500, zonder te zeggen dat je hem kunt verplaatsen. Twee niet-verplaatste markeringen stapelen exact op elkaar.

Los daarvan: de fout waardoor de letter van een eerdere verwijzing verdween — de dialoog rekende bij elke bewerking vanaf de dia zoals die was bij het openen — is gerepareerd. Dat raakte je bevinding over de koppeling regel-verwijzing indirect; het scherm is nu tenminste consistent met zichzelf.

Kruisverwijzing: #1860 beschrijft hetzelfde scherm vanuit een nieuwkomer die het draaiend probeerde. Twee dingen die jouw code-lezing bevestigen, met wat het in de praktijk oplevert: - **Bevinding 1-4 (de kale knoppenrijen).** De tester las de vormkeuze als "stelt de geselecteerde verwijzing in". Dat is hij niet: met een verwijzing geselecteerd gebeurt er niets zichtbaars, daarna bepaalt hij wat de vólgende "Toevoegen" maakt, en hij is dia-breed en herstijlt met terugwerkende kracht alles. Na een wissel naar Pijlen werden een zorgvuldig getekend gebied én alle spelden pijlen. Eén knop, drie betekenissen. - **Bevinding 4 (knoppen actief zonder selectie).** De dialoog opent met een grotendeels leeg vlak en de zin "Selecteer een bullet om een reference te plaatsen", terwijl bullettekst aanklikken niets doet en het enige element "Toevoegen" heet. Eerste gedachte van de tester: "is dit stuk?" Daarbij één ding dat je uit de code niet kon zien: **"Toevoegen" plaatst de markering zelf al**, op 0.500/0.500, zonder te zeggen dat je hem kunt verplaatsen. Twee niet-verplaatste markeringen stapelen exact op elkaar. Los daarvan: de fout waardoor de letter van een eerdere verwijzing verdween — de dialoog rekende bij elke bewerking vanaf de dia zoals die was bij het openen — is gerepareerd. Dat raakte je bevinding over de koppeling regel-verwijzing indirect; het scherm is nu tenminste consistent met zichzelf.
brenno 2026-08-31 07:00:43 +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#1859
No description provided.