diff --git a/edit.js b/edit.js index 94522ad3..d587cd09 100644 --- a/edit.js +++ b/edit.js @@ -608,6 +608,7 @@ function setupGlobalSearch() { originalOpenDialog.call(cm, template.innerHTML, callback.bind(cb), opt); }; setTimeout(function() { cm.openDialog = originalOpenDialog; }, 0); + refocusMinidialog(cm); } function focusClosestCM(activeCM) { @@ -794,6 +795,7 @@ function setupGlobalSearch() { function jumpToLine(cm) { var cur = cm.getCursor(); + refocusMinidialog(cm); cm.openDialog(template.jumpToLine.innerHTML, function(str) { var m = str.match(/^\s*(\d+)(?:\s*:\s*(\d+))?\s*$/); if (m) { @@ -802,6 +804,19 @@ function jumpToLine(cm) { }, {value: cur.line+1}); } +function refocusMinidialog(cm) { + var section = getSectionForCodeMirror(cm); + if (!section.querySelector(".CodeMirror-dialog")) { + return; + } + // close the currently opened minidialog + cm.focus(); + // make sure to focus the input in newly opened minidialog + setTimeout(function() { + section.querySelector(".CodeMirror-dialog").focus(); + }, 0); +} + function nextPrevEditor(cm, direction) { cm = editors[(editors.indexOf(cm) + direction + editors.length) % editors.length]; makeSectionVisible(cm);