MCPcopy Create free account
hub / github.com/breck7/scroll / patchDisplay

Function patchDisplay

external/.scrollLibs.js:6041–6092  ·  view source on GitHub ↗
(cm, updateNumbersFrom, dims)

Source from the content-addressed store, hash-verified

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

Callers 1

updateDisplayIfNeededFunction · 0.85

Calls 6

buildLineElementFunction · 0.85
rmFunction · 0.85
indexOfFunction · 0.85
updateLineForChangesFunction · 0.85
removeChildrenFunction · 0.85
lineNumberForFunction · 0.85

Tested by

no test coverage detected