diff --git a/lib/codemirror.js b/lib/codemirror.js index 238aa4380a..3d78108fd0 100644 --- a/lib/codemirror.js +++ b/lib/codemirror.js @@ -1663,9 +1663,9 @@ return result; }, - showSelection: function(info) { + showSelection: function(info, takeFocus) { if (!info || !this.cm.display.view.length) return; - if (info.focus) this.showPrimarySelection(); + if (info.focus || takeFocus) this.showPrimarySelection(); this.showMultipleSelections(info); }, @@ -3101,7 +3101,7 @@ } if (op.updatedDisplay || op.selectionChanged) - op.preparedSelection = display.input.prepareSelection(); + op.preparedSelection = display.input.prepareSelection(op.focus); } function endOperation_W2(op) { @@ -3114,8 +3114,9 @@ cm.display.maxLineChanged = false; } + var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus()) if (op.preparedSelection) - cm.display.input.showSelection(op.preparedSelection); + cm.display.input.showSelection(op.preparedSelection, takeFocus); if (op.updatedDisplay || op.startHeight != cm.doc.height) updateScrollbars(cm, op.barMeasure); if (op.updatedDisplay) @@ -3125,8 +3126,7 @@ if (cm.state.focused && op.updateInput) cm.display.input.reset(op.typing); - if (op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus())) - ensureFocus(op.cm); + if (takeFocus) ensureFocus(op.cm); } function endOperation_finish(op) {