Skip to content

Commit 3c36093

Browse files
committed
Recompute max line when a widget updates
1 parent e287960 commit 3c36093

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

lib/codemirror.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,7 +1014,7 @@ window.CodeMirror = (function() {
10141014

10151015
function measureLineInner(cm, line) {
10161016
var display = cm.display, measure = emptyArray(line.text.length);
1017-
var pre = lineContent(cm, line, measure);
1017+
var pre = lineContent(cm, line, measure, true);
10181018

10191019
// IE does not cache element positions of inline elements between
10201020
// calls to getBoundingClientRect. This makes the loop below,
@@ -1107,7 +1107,7 @@ window.CodeMirror = (function() {
11071107
var cached = !hasBadSpan && findCachedMeasurement(cm, line);
11081108
if (cached) return measureChar(cm, line, line.text.length, cached.measure, "right").right;
11091109

1110-
var pre = lineContent(cm, line);
1110+
var pre = lineContent(cm, line, null, true);
11111111
var end = pre.appendChild(zeroWidthElement(cm.display.measure));
11121112
removeChildrenAndAdd(cm.display.measure, pre);
11131113
return getRect(end).right - getRect(cm.display.lineDiv).left;
@@ -3737,7 +3737,7 @@ window.CodeMirror = (function() {
37373737
break;
37383738
}
37393739
runInOp(cm, function() {
3740-
cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;
3740+
cm.curOp.selectionChanged = cm.curOp.forceUpdate = cm.curOp.updateMaxLine = true;
37413741
});
37423742
}
37433743
};
@@ -4257,13 +4257,14 @@ window.CodeMirror = (function() {
42574257
(styleToClassCache[style] = "cm-" + style.replace(/ +/g, " cm-"));
42584258
}
42594259

4260-
function lineContent(cm, realLine, measure) {
4260+
function lineContent(cm, realLine, measure, copyWidgets) {
42614261
var merged, line = realLine, empty = true;
42624262
while (merged = collapsedSpanAtStart(line))
42634263
line = getLine(cm.doc, merged.find().from.line);
42644264

4265-
var builder = {pre: elt("pre"), col: 0, pos: 0, display: !measure,
4266-
measure: null, measuredSomething: false, cm: cm};
4265+
var builder = {pre: elt("pre"), col: 0, pos: 0,
4266+
measure: null, measuredSomething: false, cm: cm,
4267+
copyWidgets: copyWidgets};
42674268
if (line.textClass) builder.pre.className = line.textClass;
42684269

42694270
do {
@@ -4387,7 +4388,7 @@ window.CodeMirror = (function() {
43874388
function buildCollapsedSpan(builder, size, marker, ignoreWidget) {
43884389
var widget = !ignoreWidget && marker.replacedWith;
43894390
if (widget) {
4390-
if (!builder.display) widget = widget.cloneNode(true);
4391+
if (builder.copyWidgets) widget = widget.cloneNode(true);
43914392
builder.pre.appendChild(widget);
43924393
if (builder.measure) {
43934394
if (size) {

0 commit comments

Comments
 (0)