|
@@ -3285,19 +3285,22 @@
|
|
|
}
|
|
|
|
|
|
function ensureFocus(cm) {
|
|
|
- if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }
|
|
|
+ if (!cm.hasFocus()) {
|
|
|
+ cm.display.input.focus();
|
|
|
+ if (!cm.state.focused) { onFocus(cm); }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
function delayBlurEvent(cm) {
|
|
|
cm.state.delayingBlurEvent = true;
|
|
|
setTimeout(function () { if (cm.state.delayingBlurEvent) {
|
|
|
cm.state.delayingBlurEvent = false;
|
|
|
- onBlur(cm);
|
|
|
+ if (cm.state.focused) { onBlur(cm); }
|
|
|
} }, 100);
|
|
|
}
|
|
|
|
|
|
function onFocus(cm, e) {
|
|
|
- if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }
|
|
|
+ if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }
|
|
|
|
|
|
if (cm.options.readOnly == "nocursor") { return }
|
|
|
if (!cm.state.focused) {
|
|
@@ -3479,14 +3482,15 @@
|
|
|
if (newTop != screentop) { result.scrollTop = newTop; }
|
|
|
}
|
|
|
|
|
|
- var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;
|
|
|
- var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);
|
|
|
+ var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;
|
|
|
+ var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;
|
|
|
+ var screenw = displayWidth(cm) - display.gutters.offsetWidth;
|
|
|
var tooWide = rect.right - rect.left > screenw;
|
|
|
if (tooWide) { rect.right = rect.left + screenw; }
|
|
|
if (rect.left < 10)
|
|
|
{ result.scrollLeft = 0; }
|
|
|
else if (rect.left < screenleft)
|
|
|
- { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }
|
|
|
+ { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }
|
|
|
else if (rect.right > screenw + screenleft - 3)
|
|
|
{ result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }
|
|
|
return result
|
|
@@ -5768,7 +5772,7 @@
|
|
|
changeLine(doc, handle, "widget", function (line) {
|
|
|
var widgets = line.widgets || (line.widgets = []);
|
|
|
if (widget.insertAt == null) { widgets.push(widget); }
|
|
|
- else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }
|
|
|
+ else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }
|
|
|
widget.line = line;
|
|
|
if (cm && !lineIsHidden(doc, line)) {
|
|
|
var aboveVisible = heightAtLine(line) < doc.scrollTop;
|
|
@@ -7377,6 +7381,10 @@
|
|
|
var dragEnd = operation(cm, function (e) {
|
|
|
if (webkit) { display.scroller.draggable = false; }
|
|
|
cm.state.draggingText = false;
|
|
|
+ if (cm.state.delayingBlurEvent) {
|
|
|
+ if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }
|
|
|
+ else { delayBlurEvent(cm); }
|
|
|
+ }
|
|
|
off(display.wrapper.ownerDocument, "mouseup", dragEnd);
|
|
|
off(display.wrapper.ownerDocument, "mousemove", mouseMove);
|
|
|
off(display.scroller, "dragstart", dragStart);
|
|
@@ -7400,15 +7408,15 @@
|
|
|
if (webkit) { display.scroller.draggable = true; }
|
|
|
cm.state.draggingText = dragEnd;
|
|
|
dragEnd.copy = !behavior.moveOnDrag;
|
|
|
- // IE's approach to draggable
|
|
|
- if (display.scroller.dragDrop) { display.scroller.dragDrop(); }
|
|
|
on(display.wrapper.ownerDocument, "mouseup", dragEnd);
|
|
|
on(display.wrapper.ownerDocument, "mousemove", mouseMove);
|
|
|
on(display.scroller, "dragstart", dragStart);
|
|
|
on(display.scroller, "drop", dragEnd);
|
|
|
|
|
|
- delayBlurEvent(cm);
|
|
|
+ cm.state.delayingBlurEvent = true;
|
|
|
setTimeout(function () { return display.input.focus(); }, 20);
|
|
|
+ // IE's approach to draggable
|
|
|
+ if (display.scroller.dragDrop) { display.scroller.dragDrop(); }
|
|
|
}
|
|
|
|
|
|
function rangeForUnit(cm, pos, unit) {
|
|
@@ -7421,6 +7429,7 @@
|
|
|
|
|
|
// Normal selection, as opposed to text dragging.
|
|
|
function leftButtonSelect(cm, event, start, behavior) {
|
|
|
+ if (ie) { delayBlurEvent(cm); }
|
|
|
var display = cm.display, doc = cm.doc;
|
|
|
e_preventDefault(event);
|
|
|
|
|
@@ -9781,7 +9790,7 @@
|
|
|
|
|
|
addLegacyProps(CodeMirror);
|
|
|
|
|
|
- CodeMirror.version = "5.58.0";
|
|
|
+ CodeMirror.version = "5.58.3";
|
|
|
|
|
|
return CodeMirror;
|
|
|
|