- Open a large doc (>100k)
- Hold down a key to type lots of chars quickly (~100).
- Press undo
We appear to be trying to render the cursor after each transaction in the undo stack is committed. This should be debounced.
We appear to be trying to render the cursor after each transaction in the undo stack is committed. This should be debounced.
Change 623411 had a related patch set uploaded (by Esanders; owner: Esanders):
[VisualEditor/VisualEditor@master] ve.ce.Surface: Debounce onModelDocumentUpdate
Change 623411 merged by jenkins-bot:
[VisualEditor/VisualEditor@master] ve.ce.Surface: Debounce onModelDocumentUpdate
Change 623875 had a related patch set uploaded (by Bartosz Dziewoński; owner: Bartosz Dziewoński):
[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (b49db9a5b)
Change 623875 merged by jenkins-bot:
[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (9534694b4)
Change 629471 had a related patch set uploaded (by Esanders; owner: Esanders):
[VisualEditor/VisualEditor@master] Follow-up I78041b9b4: Debounce just showModelSelection
All the extra calls appear to come from:
/** * Handle documentUpdate events on the surface model. */ ve.ce.Surface.prototype.onModelDocumentUpdate = function () { var surface = this; if ( this.contentBranchNodeChanged ) { // Update the selection state from model this.onModelSelect(); }
At the very least this could probably be debounced, although I'm struggling to see when it is ever necessary. cc @dchan
It's done because a model change within a ContentBranchNode gets propagated to the view by replacing the entire contents of the CBN, which resets the native selection to the start of the CBN.
Change 809052 had a related patch set uploaded (by Divec; author: Divec):
[VisualEditor/VisualEditor@master] Only update cursor holders if they're not already correct.
Change 809093 had a related patch set uploaded (by Divec; author: Divec):
[VisualEditor/VisualEditor@master] Use TransactionSquasher to speed up undo/redo