mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
Fix updating notebook metadata though editor api (#131681)
`_isDocumentMetadataChangeTransient` currently seems to return true for every metadata object except `{ trusted: boolean }`. This causes all metadata updates to be considered transient, which means that the notebook is never marked dirty
This PR deletes the old function so that we use `triggerDirtyChange` to track when the document becomes dirty instead
This commit is contained in:
@@ -658,17 +658,6 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel
|
||||
this._notebookSpecificAlternativeId = Number(newAlternativeVersionId.substr(0, newAlternativeVersionId.indexOf('_')));
|
||||
}
|
||||
|
||||
private _isDocumentMetadataChangeTransient(a: NotebookDocumentMetadata, b: NotebookDocumentMetadata) {
|
||||
const keys = new Set([...Object.keys(a || {}), ...Object.keys(b || {})]);
|
||||
for (let key of keys) {
|
||||
if (key !== 'trusted') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private _updateNotebookMetadata(metadata: NotebookDocumentMetadata, computeUndoRedo: boolean) {
|
||||
const oldMetadata = this.metadata;
|
||||
const triggerDirtyChange = this._isDocumentMetadataChanged(this.metadata, metadata);
|
||||
@@ -694,7 +683,7 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel
|
||||
|
||||
this.metadata = metadata;
|
||||
this._pauseableEmitter.fire({
|
||||
rawEvents: [{ kind: NotebookCellsChangeType.ChangeDocumentMetadata, metadata: this.metadata, transient: this._isDocumentMetadataChangeTransient(oldMetadata, metadata) }],
|
||||
rawEvents: [{ kind: NotebookCellsChangeType.ChangeDocumentMetadata, metadata: this.metadata, transient: !triggerDirtyChange }],
|
||||
versionId: this.versionId,
|
||||
synchronous: true,
|
||||
endSelectionState: undefined
|
||||
|
||||
Reference in New Issue
Block a user