Documentopslag markeert schoon terwijl er nog getypt wordt #2720
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#2720
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 mis is
Een documentopslag leest de bron, wacht op de schijf, en markeert het tabblad daarna onvoorwaardelijk als schoon. Aanslagen die tijdens dat wachten binnenkomen staan niet in het bestand. Het tabblad is niet meer vuil, de herstelkopie verdwijnt, en sluiten vraagt niets. Na sluiten of een crash is die tekst weg.
Bewijs
lib/widgets/shell/document_save_actions.dartsaveDocumentWithDestination: de te schrijven bron wordt vóór deawaitvastgelegd; na een geslaagde schrijfactie volgtmarkSaved.lib/state/document_provider.dartmarkSaved: zetisDirtyop false en neemt de bron van dát moment alssavedSource, niet de bron die net geschreven is.lib/state/tabs_provider.dart: de herstelkopie gaat weg zodra het tabblad niet meer vuil is.test/document_provider_test.dartdektmarkSavedalleen op een stil document.Voorstel
Na de
awaitde bron opnieuw lezen. Alleen schoon markeren als die nog gelijk is aan wat er geschreven is. Anders vuil laten en meteen opnieuw schrijven, en daarop wachten vóór sluiten of afsluiten.Regressietest: een
DocumentNotifierwaarvan het schrijven blokkeert, tussendoor een edit, daarna assert datisDirtytrue blijft, de herstelkopie blijft, en een vervolgschrijfactie de nieuwe bron op schijf zet.Het bestandsformaat verandert niet.