From a6052f92a8eb36625e421e608c66080f947e9fe3 Mon Sep 17 00:00:00 2001 From: John Johnson Date: Sun, 18 Nov 2018 10:24:09 -1000 Subject: [PATCH 1/2] Fix issue #5452 by putting in checks into the _changeCallback function to compare data with the model, calling fromJSON only if not equal. --- packages/docregistry/src/mimedocument.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/docregistry/src/mimedocument.ts b/packages/docregistry/src/mimedocument.ts index 3fc2876cbe13..2d5ac8a92274 100644 --- a/packages/docregistry/src/mimedocument.ts +++ b/packages/docregistry/src/mimedocument.ts @@ -11,7 +11,7 @@ import { MimeModel } from '@jupyterlab/rendermime'; -import { JSONObject, PromiseDelegate } from '@phosphor/coreutils'; +import { JSONObject, PromiseDelegate, JSONExt } from '@phosphor/coreutils'; import { Message, MessageLoop } from '@phosphor/messaging'; @@ -165,9 +165,13 @@ export class MimeContent extends Widget { } let data = options.data[this.mimeType]; if (typeof data === 'string') { - this._context.model.fromString(data); + if (data === this._context.model.toString()) { + this._context.model.fromString(data); + } } else { - this._context.model.fromJSON(data); + if (!JSONExt.deepEqual(data, this._context.model.toJSON())) { + this._context.model.fromJSON(data); + } } }; From c164b4138bb7a8fb3b10ba84b8b2b871e3f8ac00 Mon Sep 17 00:00:00 2001 From: John Johnson Date: Sun, 18 Nov 2018 10:54:49 -1000 Subject: [PATCH 2/2] Fixed equality check. --- packages/docregistry/src/mimedocument.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docregistry/src/mimedocument.ts b/packages/docregistry/src/mimedocument.ts index 2d5ac8a92274..795231611f7a 100644 --- a/packages/docregistry/src/mimedocument.ts +++ b/packages/docregistry/src/mimedocument.ts @@ -165,7 +165,7 @@ export class MimeContent extends Widget { } let data = options.data[this.mimeType]; if (typeof data === 'string') { - if (data === this._context.model.toString()) { + if (data !== this._context.model.toString()) { this._context.model.fromString(data); } } else {