(cm, update)
| 161 | } |
| 162 | |
| 163 | export function postUpdateDisplay(cm, update) { |
| 164 | let viewport = update.viewport |
| 165 | |
| 166 | for (let first = true;; first = false) { |
| 167 | if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { |
| 168 | // Clip forced viewport to actual scrollable area. |
| 169 | if (viewport && viewport.top != null) |
| 170 | viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)} |
| 171 | // Updated line heights might result in the drawn area not |
| 172 | // actually covering the viewport. Keep looping until it does. |
| 173 | update.visible = visibleLines(cm.display, cm.doc, viewport) |
| 174 | if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) |
| 175 | break |
| 176 | } else if (first) { |
| 177 | update.visible = visibleLines(cm.display, cm.doc, viewport) |
| 178 | } |
| 179 | if (!updateDisplayIfNeeded(cm, update)) break |
| 180 | updateHeightsInViewport(cm) |
| 181 | let barMeasure = measureForScrollbars(cm) |
| 182 | updateSelection(cm) |
| 183 | updateScrollbars(cm, barMeasure) |
| 184 | setDocumentHeight(cm, barMeasure) |
| 185 | update.force = false |
| 186 | } |
| 187 | |
| 188 | update.signal(cm, "update", cm) |
| 189 | if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { |
| 190 | update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo) |
| 191 | cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo |
| 192 | } |
| 193 | } |
| 194 | |
| 195 | export function updateDisplaySimple(cm, viewport) { |
| 196 | let update = new DisplayUpdate(cm, viewport) |
no test coverage detected