MCPcopy
hub / github.com/witheve/Eve / endOperation_finish

Function endOperation_finish

src/codemirror.js:3147–3191  ·  view source on GitHub ↗
(op)

Source from the content-addressed store, hash-verified

3145 }
3146
3147 function endOperation_finish(op) {
3148 var cm = op.cm, display = cm.display, doc = cm.doc;
3149
3150 if (op.updatedDisplay) postUpdateDisplay(cm, op.update);
3151
3152 // Abort mouse wheel delta measurement, when scrolling explicitly
3153 if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))
3154 display.wheelStartX = display.wheelStartY = null;
3155
3156 // Propagate the scroll position to the actual DOM scroller
3157 if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) {
3158 doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));
3159 display.scrollbars.setScrollTop(doc.scrollTop);
3160 display.scroller.scrollTop = doc.scrollTop;
3161 }
3162 if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) {
3163 doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft));
3164 display.scrollbars.setScrollLeft(doc.scrollLeft);
3165 display.scroller.scrollLeft = doc.scrollLeft;
3166 alignHorizontally(cm);
3167 }
3168 // If we need to scroll a specific position into view, do so.
3169 if (op.scrollToPos) {
3170 var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),
3171 clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);
3172 if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords);
3173 }
3174
3175 // Fire events for markers that are hidden/unidden by editing or
3176 // undoing
3177 var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;
3178 if (hidden) for (var i = 0; i < hidden.length; ++i)
3179 if (!hidden[i].lines.length) signal(hidden[i], "hide");
3180 if (unhidden) for (var i = 0; i < unhidden.length; ++i)
3181 if (unhidden[i].lines.length) signal(unhidden[i], "unhide");
3182
3183 if (display.wrapper.offsetHeight)
3184 doc.scrollTop = cm.display.scroller.scrollTop;
3185
3186 // Fire change events, and delayed event handlers
3187 if (op.changeObjs)
3188 signal(cm, "changes", cm, op.changeObjs);
3189 if (op.update)
3190 op.update.finish();
3191 }
3192
3193 // Run the given function in an operation
3194 function runInOp(cm, f) {

Callers 1

endOperationsFunction · 0.85

Calls 5

postUpdateDisplayFunction · 0.85
alignHorizontallyFunction · 0.85
scrollPosIntoViewFunction · 0.85
clipPosFunction · 0.85
maybeScrollWindowFunction · 0.85

Tested by

no test coverage detected