[#1801] De beschrijving van een beeldverwijzing is niet middenin te corrigeren #1863
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1863
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat er gebeurt
Open Afbeeldingsverwijzingen op een Bullets + Afbeelding-dia, kies een regel met een verwijzing en typ een beschrijving. Zet de cursor daarna middenin de zin en typ één teken: de cursor springt naar het eind, en alles wat je verder typt komt achteraan te staan. Een woord verbeteren middenin een beschrijving kan dus niet — je kunt hem alleen wissen en opnieuw typen.
Herhaalstappen
de print met display.deenprinten typgrote.Verwacht:
de grote print met display. Werkelijk: na het eerste teken staat de cursor achteraan en groeit de tekst aan het eind aan.Oorzaak
lib/widgets/editors/callout_editor.dartr. 527 — de controller wordt inbuild()gemaakt, met de selectie hard op het eind:onChanged→_setDescription→setState→ nieuwebuild→ nieuwe controller → selectie weer aan het eind. Bijkomend: elke controller die zo ontstaat wordt nooitdisposed.Reparatie
Eén controller die bij de
Statehoort: aanmaken ininitState, opruimen indispose, en bij het wisselen van verwijzing alleen de waarde zetten (TextEditingValue) zonder de selectie te verplaatsen. De tekst bijwerken mag de cursor niet aanraken.Wat dit had moeten vangen
test/callout_editor_test.dartheeft veertien widget-tests en raakt het beschrijvingsveld alleen als beginwaarde. De regressietest: veld vullen,selectionmiddenin zetten, één teken invoeren, en dan toetsen dat (a) de tekst op de juiste plek is aangevuld én (b)controller.selectionéén positie verder staat in plaats van aan het eind. Zonder (b) komt de fout terug zodra iemand het veld opnieuw aanraakt.Verwant
Bevinding 11 in #1859. Het ontwerp daar verhuist dit veld naar het regelpaneel; die verhuizing repareert dit niet — de controller moet hoe dan ook uit
build().