Skip to content

Commit 613b437

Browse files
committed
1 parent 682cb4f commit 613b437

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

src/measurement/position_measurement.js

+11-14
Original file line numberDiff line numberDiff line change
@@ -185,16 +185,6 @@ export function nodeAndOffsetInLineMap(map, ch, bias) {
185185
return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}
186186
}
187187

188-
function getUsefulRect(rects, bias) {
189-
let rect = nullRect
190-
if (bias == "left") for (let i = 0; i < rects.length; i++) {
191-
if ((rect = rects[i]).left != rect.right) break
192-
} else for (let i = rects.length - 1; i >= 0; i--) {
193-
if ((rect = rects[i]).left != rect.right) break
194-
}
195-
return rect
196-
}
197-
198188
function measureCharInner(cm, prepared, ch, bias) {
199189
let place = nodeAndOffsetInLineMap(prepared.map, ch, bias)
200190
let node = place.node, start = place.start, end = place.end, collapse = place.collapse
@@ -204,10 +194,17 @@ function measureCharInner(cm, prepared, ch, bias) {
204194
for (let i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned
205195
while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start
206196
while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end
207-
if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)
208-
rect = node.parentNode.getBoundingClientRect()
209-
else
210-
rect = getUsefulRect(range(node, start, end).getClientRects(), bias)
197+
if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {
198+
rect = node.parentNode.getBoundingClientRect();
199+
} else if (ie && cm.options.lineWrapping) {
200+
var rects = range(node, start, end).getClientRects();
201+
if (rects.length)
202+
rect = rects[bias == "right" ? rects.length - 1 : 0];
203+
else
204+
rect = nullRect;
205+
} else {
206+
rect = range(node, start, end).getBoundingClientRect() || nullRect;
207+
}
211208
if (rect.left || rect.right || start == 0) break
212209
end = start
213210
start = start - 1

0 commit comments

Comments
 (0)