This follows up on 1f8643ef76 to:
- Use etags to prevent file reads if the file has not changed
- Use etags inside the service worker based resource loading flow (web)
Some time ago we made it so that predictions would not start for a line
until the first character was successfully predicted, in order to not
accidentally predict passwords.
This was good, except when it came to wrapping. When predicting a
character, we check the cursor position to check to see whether we
should insert a boundary. However if no predictions are made (or if
there's any boundary in the way) the cursor would be behind the
position for prediction purposes. Namely caused wrapping issues when
pasting long commands in the terminal.
In this commit I separate the physicalCursor from the tentativeCursor,
the latter now always tracks the position of the cursor after _all_
currently-queued predictions have been validated.
This also changed how cursors are dealt with in boundaries -- I still
push the tentative prediction, but this now only moves the tentative
cursor, not the physical one.
This existed before, so I don't think this is candidate-worthy.
Fixes#115164
* fix multiple save dialogs appearing on Windows when spamming Ctrl+S
* remove old fix and instead keep track of windows with open dialogs in the dialogMainService
* keep initialisation of activeWindowDialogs in constructor
* remove unused variable
* some changes
* queue dialogs based on hash of options
* simplify structure, fix comment typo
* Apply suggestions from code review
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>
* remove unnecessary async/await for aquireFileDialogLock method
* don't acquire file dialog lock for message boxes
* use MessageBoxReturnValue | SaveDialogReturnValue | OpenDialogReturnValue instead of any type for getWindowDialogQueue
* Apply suggestions from code review
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>
Co-authored-by: Benjamin Pasero <benjpas@microsoft.com>
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>