(cm, update)
| 5987 | } |
| 5988 | |
| 5989 | function postUpdateDisplay(cm, update) { |
| 5990 | var viewport = update.viewport |
| 5991 | |
| 5992 | for (var first = true; ; first = false) { |
| 5993 | if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { |
| 5994 | // Clip forced viewport to actual scrollable area. |
| 5995 | if (viewport && viewport.top != null) { |
| 5996 | viewport = { top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top) } |
| 5997 | } |
| 5998 | // Updated line heights might result in the drawn area not |
| 5999 | // actually covering the viewport. Keep looping until it does. |
| 6000 | update.visible = visibleLines(cm.display, cm.doc, viewport) |
| 6001 | if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) { |
| 6002 | break |
| 6003 | } |
| 6004 | } |
| 6005 | if (!updateDisplayIfNeeded(cm, update)) { |
| 6006 | break |
| 6007 | } |
| 6008 | updateHeightsInViewport(cm) |
| 6009 | var barMeasure = measureForScrollbars(cm) |
| 6010 | updateSelection(cm) |
| 6011 | updateScrollbars(cm, barMeasure) |
| 6012 | setDocumentHeight(cm, barMeasure) |
| 6013 | update.force = false |
| 6014 | } |
| 6015 | |
| 6016 | update.signal(cm, "update", cm) |
| 6017 | if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { |
| 6018 | update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo) |
| 6019 | cm.display.reportedViewFrom = cm.display.viewFrom |
| 6020 | cm.display.reportedViewTo = cm.display.viewTo |
| 6021 | } |
| 6022 | } |
| 6023 | |
| 6024 | function updateDisplaySimple(cm, viewport) { |
| 6025 | var update = new DisplayUpdate(cm, viewport) |
no test coverage detected