Focus now returns to the editor properly when you quit out the code
editor without saving.
This also sets the return location to be correct on normal saving (Would
sometimes jump to the end of the document).
For #4109.
+ /**
+ * @type {?Function}
+ */
+ saveCallback = null;
+
+ /**
+ * @type {?Function}
+ */
+ cancelCallback = null;
- if (this.callback) {
- this.callback(this.editor.getContent(), this.languageInput.value);
+ if (this.saveCallback) {
+ this.saveCallback(this.editor.getContent(), this.languageInput.value);
- async open(code, language, callback) {
+ async open(code, language, saveCallback, cancelCallback) {
this.languageInput.value = language;
this.languageInput.value = language;
- this.callback = callback;
+ this.saveCallback = saveCallback;
+ this.cancelCallback = cancelCallback;
await this.show();
this.languageInputChange(language);
await this.show();
this.languageInputChange(language);
this.editor.focus();
}, () => {
this.addHistory();
this.editor.focus();
}, () => {
this.addHistory();
+ if (this.cancelCallback) {
+ this.cancelCallback();
+ }
* @param {function(string, string)} callback (Receives (code: string,language: string)
*/
function showPopup(editor, code, language, callback) {
* @param {function(string, string)} callback (Receives (code: string,language: string)
*/
function showPopup(editor, code, language, callback) {
- window.$components.first('code-editor').open(code, language, (newCode, newLang) => {
+ /** @var {CodeEditor} codeEditor * */
+ const codeEditor = window.$components.first('code-editor');
+ const bookMark = editor.selection.getBookmark();
+ codeEditor.open(code, language, (newCode, newLang) => {
callback(newCode, newLang);
editor.focus();
callback(newCode, newLang);
editor.focus();
+ editor.selection.moveToBookmark(bookMark);
+ }, () => {
+ editor.focus();
+ editor.selection.moveToBookmark(bookMark);