@@ -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