Fix arrows keys moving through edit history

Different fix that fixes https://github.com/vector-im/riot-web/issues/11817
by setting the flag before the callback rather than having the update
method set the flag.

Regressed in https://github.com/matrix-org/matrix-react-sdk/pull/3842
Fixes https://github.com/vector-im/riot-web/issues/11917
This commit is contained in:
David Baker 2020-01-20 12:20:21 +00:00
parent 965feee86f
commit 2ed5d89c9f

View file

@ -126,7 +126,6 @@ export default class BasicMessageEditor extends React.Component {
} }
_updateEditorState = (selection, inputType, diff) => { _updateEditorState = (selection, inputType, diff) => {
this._modifiedFlag = true;
renderModel(this._editorRef, this.props.model); renderModel(this._editorRef, this.props.model);
if (selection) { // set the caret/selection if (selection) { // set the caret/selection
try { try {
@ -212,6 +211,7 @@ export default class BasicMessageEditor extends React.Component {
if (type === "cut") { if (type === "cut") {
// Remove the text, updating the model as appropriate // Remove the text, updating the model as appropriate
replaceRangeAndMoveCaret(range, []); replaceRangeAndMoveCaret(range, []);
this._modifiedFlag = true;
} }
event.preventDefault(); event.preventDefault();
} }
@ -238,6 +238,7 @@ export default class BasicMessageEditor extends React.Component {
const text = event.clipboardData.getData("text/plain"); const text = event.clipboardData.getData("text/plain");
parts = parsePlainTextMessage(text, partCreator); parts = parsePlainTextMessage(text, partCreator);
} }
this._modifiedFlag = true;
const range = getRangeForSelection(this._editorRef, model, document.getSelection()); const range = getRangeForSelection(this._editorRef, model, document.getSelection());
replaceRangeAndMoveCaret(range, parts); replaceRangeAndMoveCaret(range, parts);
event.preventDefault(); event.preventDefault();
@ -248,6 +249,7 @@ export default class BasicMessageEditor extends React.Component {
if (this._isIMEComposing) { if (this._isIMEComposing) {
return; return;
} }
this._modifiedFlag = true;
const sel = document.getSelection(); const sel = document.getSelection();
const {caret, text} = getCaretOffsetAndText(this._editorRef, sel); const {caret, text} = getCaretOffsetAndText(this._editorRef, sel);
this.props.model.update(text, event.inputType, caret); this.props.model.update(text, event.inputType, caret);
@ -258,6 +260,7 @@ export default class BasicMessageEditor extends React.Component {
const {caret, text} = getCaretOffsetAndText(this._editorRef, sel); const {caret, text} = getCaretOffsetAndText(this._editorRef, sel);
const newText = text.substr(0, caret.offset) + textToInsert + text.substr(caret.offset); const newText = text.substr(0, caret.offset) + textToInsert + text.substr(caret.offset);
caret.offset += textToInsert.length; caret.offset += textToInsert.length;
this._modifiedFlag = true;
this.props.model.update(newText, inputType, caret); this.props.model.update(newText, inputType, caret);
} }