From 750c86b6336b0107b81c4b460cf855ef4257c47a Mon Sep 17 00:00:00 2001
From: Marijn Haverbeke <marijn@haverbeke.nl>
Date: Tue, 30 Jan 2018 09:26:02 +0100
Subject: [PATCH] Prevent selection undo from modifying read-only documents

Closes #5217
---
 src/model/changes.js | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/model/changes.js b/src/model/changes.js
index b00e29b13..f006ceadb 100644
--- a/src/model/changes.js
+++ b/src/model/changes.js
@@ -85,7 +85,8 @@ function makeChangeInner(doc, change) {
 
 // Revert a change stored in a document's history.
 export function makeChangeFromHistory(doc, type, allowSelectionOnly) {
-  if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) return
+  let suppress = doc.cm && doc.cm.state.suppressEdits
+  if (suppress && !allowSelectionOnly) return
 
   let hist = doc.history, event, selAfter = doc.sel
   let source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done
@@ -110,8 +111,10 @@ export function makeChangeFromHistory(doc, type, allowSelectionOnly) {
         return
       }
       selAfter = event
-    }
-    else break
+    } else if (suppress) {
+      source.push(event);
+      return
+    } else break
   }
 
   // Build up a reverse change object to add to the opposite history
-- 
GitLab