Merge pull request #3391 from matrix-org/bwindels/cider-format-history

New composer: ensure undo history is persisted before applying formatting
This commit is contained in:
Bruno Windels 2019-09-06 09:28:18 +00:00 committed by GitHub
commit 5014b606db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View file

@ -454,6 +454,7 @@ export default class BasicMessageEditor extends React.Component {
if (range.length === 0) { if (range.length === 0) {
return; return;
} }
this.historyManager.ensureLastChangesPushed(this.props.model);
switch (action) { switch (action) {
case "bold": case "bold":
formatInline(range, "**"); formatInline(range, "**");

View file

@ -106,6 +106,12 @@ export default class HistoryManager {
return shouldPush; return shouldPush;
} }
ensureLastChangesPushed(model) {
if (this._changedSinceLastPush) {
this._pushState(model, this._lastCaret);
}
}
canUndo() { canUndo() {
return this._currentIndex >= 1 || this._changedSinceLastPush; return this._currentIndex >= 1 || this._changedSinceLastPush;
} }
@ -117,9 +123,7 @@ export default class HistoryManager {
// returns state that should be applied to model // returns state that should be applied to model
undo(model) { undo(model) {
if (this.canUndo()) { if (this.canUndo()) {
if (this._changedSinceLastPush) { this.ensureLastChangesPushed(model);
this._pushState(model, this._lastCaret);
}
this._currentIndex -= 1; this._currentIndex -= 1;
return this._stack[this._currentIndex]; return this._stack[this._currentIndex];
} }