MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / patchDisplay

Function patchDisplay

lib/web/CodeMirror/src/display/update_display.js:212–252  ·  view source on GitHub ↗
(cm, updateNumbersFrom, dims)

Source from the content-addressed store, hash-verified

210// that are not there yet, and updating the ones that are out of
211// date.
212function patchDisplay(cm, updateNumbersFrom, dims) {
213 let display = cm.display, lineNumbers = cm.options.lineNumbers
214 let container = display.lineDiv, cur = container.firstChild
215
216 function rm(node) {
217 let next = node.nextSibling
218 // Works around a throw-scroll bug in OS X Webkit
219 if (webkit && mac && cm.display.currentWheelTarget == node)
220 node.style.display = "none"
221 else
222 node.parentNode.removeChild(node)
223 return next
224 }
225
226 let view = display.view, lineN = display.viewFrom
227 // Loop over the elements in the view, syncing cur (the DOM nodes
228 // in display.lineDiv) with the view as we go.
229 for (let i = 0; i < view.length; i++) {
230 let lineView = view[i]
231 if (lineView.hidden) {
232 } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet
233 let node = buildLineElement(cm, lineView, lineN, dims)
234 container.insertBefore(node, cur)
235 } else { // Already drawn
236 while (cur != lineView.node) cur = rm(cur)
237 let updateNumber = lineNumbers && updateNumbersFrom != null &&
238 updateNumbersFrom <= lineN && lineView.lineNumber
239 if (lineView.changes) {
240 if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false
241 updateLineForChanges(cm, lineView, lineN, dims)
242 }
243 if (updateNumber) {
244 removeChildren(lineView.lineNumber)
245 lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)))
246 }
247 cur = lineView.node.nextSibling
248 }
249 lineN += lineView.size
250 }
251 while (cur) cur = rm(cur)
252}
253
254export function updateGutterSpace(display) {
255 let width = display.gutters.offsetWidth

Callers 1

updateDisplayIfNeededFunction · 0.70

Calls 6

buildLineElementFunction · 0.90
indexOfFunction · 0.90
updateLineForChangesFunction · 0.90
removeChildrenFunction · 0.90
lineNumberForFunction · 0.90
rmFunction · 0.70

Tested by

no test coverage detected