fix(document): knip en plak op de vastgelegde positie, niet op gok (#2466) #2478

Merged
brenno merged 1 commit from fix/document-klembord-race into main 2026-10-19 15:46:51 +00:00
Owner

Samenvatting

  • Knippen en slim plakken leggen controller, selectie, weergavestand en brontekst vóór de eerste clipboard-await vast (#2466).
  • Verandert de inhoud of controller tijdens de platform-I/O, dan wordt de destructieve actie overgeslagen met melding in plaats van op een geraden plek uitgevoerd.
  • Contextmenu knip/kopieer/plak gebruikt nu dezelfde Markdown-bewuste routes als de sneltoetsen; lijstmarkeringen overleven knippen midden in een regel.
  • Regressiedekking: vijf race-tests (trage setData/getData met tussentijdse mutatie, caret-only, bronmodus) plus contextmenu-knip met lijststructuur.

Testplan

  • make check volledig groen

Generated with Devin

## Samenvatting - Knippen en slim plakken leggen controller, selectie, weergavestand en brontekst vóór de eerste clipboard-await vast (#2466). - Verandert de inhoud of controller tijdens de platform-I/O, dan wordt de destructieve actie overgeslagen met melding in plaats van op een geraden plek uitgevoerd. - Contextmenu knip/kopieer/plak gebruikt nu dezelfde Markdown-bewuste routes als de sneltoetsen; lijstmarkeringen overleven knippen midden in een regel. - Regressiedekking: vijf race-tests (trage setData/getData met tussentijdse mutatie, caret-only, bronmodus) plus contextmenu-knip met lijststructuur. ## Testplan - [x] `make check` volledig groen Generated with [Devin](https://devin.ai)
Klembord-I/O is asynchroon: tussen het lezen of schrijven van het klembord
en het bewerken van de tekst kan de gebruiker typen, van stand wisselen of
een ander document openen. De invoegpositie uit de opdracht lag dan al lang
vastgelegd, maar de code las hem na de await opnieuw uit — een knip kon zo
een ander bereik wissen dan was geselecteerd en een plak kon op een plaats
landen die er niet meer was.

Nu ligt vóór de eerste await alles vast: stand, broncontroller en -tekst,
bron-caret, Quill-controller en -caret. Verandert de inhoud, controller of
stand tijdens de I/O, dan slaat de handeling over met een melding in plaats
van te gokken; een loutere caret-verplaatsing blijft wel geldig. De cancel
van de wijzigingswachter wordt bewust niet ge-await — een extra event-loop-
beurt na de klembordactie zou de bewerking pas na het settle-moment laten
landen.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 74cf820af9 into main 2026-10-19 15:46:51 +00:00
Sign in to join this conversation.
No description provided.