(cm, updateNumbersFrom, dims)
| 6039 | // that are not there yet, and updating the ones that are out of |
| 6040 | // date. |
| 6041 | function patchDisplay(cm, updateNumbersFrom, dims) { |
| 6042 | var display = cm.display, |
| 6043 | lineNumbers = cm.options.lineNumbers |
| 6044 | var container = display.lineDiv, |
| 6045 | cur = container.firstChild |
| 6046 | |
| 6047 | function rm(node) { |
| 6048 | var next = node.nextSibling |
| 6049 | // Works around a throw-scroll bug in OS X Webkit |
| 6050 | if (webkit && mac && cm.display.currentWheelTarget == node) { |
| 6051 | node.style.display = "none" |
| 6052 | } else { |
| 6053 | node.parentNode.removeChild(node) |
| 6054 | } |
| 6055 | return next |
| 6056 | } |
| 6057 | |
| 6058 | var view = display.view, |
| 6059 | lineN = display.viewFrom |
| 6060 | // Loop over the elements in the view, syncing cur (the DOM nodes |
| 6061 | // in display.lineDiv) with the view as we go. |
| 6062 | for (var i = 0; i < view.length; i++) { |
| 6063 | var lineView = view[i] |
| 6064 | if (lineView.hidden); |
| 6065 | else if (!lineView.node || lineView.node.parentNode != container) { |
| 6066 | // Not drawn yet |
| 6067 | var node = buildLineElement(cm, lineView, lineN, dims) |
| 6068 | container.insertBefore(node, cur) |
| 6069 | } else { |
| 6070 | // Already drawn |
| 6071 | while (cur != lineView.node) { |
| 6072 | cur = rm(cur) |
| 6073 | } |
| 6074 | var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber |
| 6075 | if (lineView.changes) { |
| 6076 | if (indexOf(lineView.changes, "gutter") > -1) { |
| 6077 | updateNumber = false |
| 6078 | } |
| 6079 | updateLineForChanges(cm, lineView, lineN, dims) |
| 6080 | } |
| 6081 | if (updateNumber) { |
| 6082 | removeChildren(lineView.lineNumber) |
| 6083 | lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))) |
| 6084 | } |
| 6085 | cur = lineView.node.nextSibling |
| 6086 | } |
| 6087 | lineN += lineView.size |
| 6088 | } |
| 6089 | while (cur) { |
| 6090 | cur = rm(cur) |
| 6091 | } |
| 6092 | } |
| 6093 | |
| 6094 | function updateGutterSpace(cm) { |
| 6095 | var width = cm.display.gutters.offsetWidth |
no test coverage detected