Skip to content
Snippets Groups Projects
Commit d8a95221 authored by Adrian Heine's avatar Adrian Heine Committed by Marijn Haverbeke
Browse files

Re-use setScrollLeft in operations

parent 3a462875
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,6 @@ import { activeElt } from "../util/dom" ...@@ -6,7 +6,6 @@ import { activeElt } from "../util/dom"
import { finishOperation, pushOperation } from "../util/operation_group" import { finishOperation, pushOperation } from "../util/operation_group"
import { ensureFocus } from "./focus" import { ensureFocus } from "./focus"
import { alignHorizontally } from "./line_numbers"
import { measureForScrollbars, updateScrollbars } from "./scrollbars" import { measureForScrollbars, updateScrollbars } from "./scrollbars"
import { setScrollLeft } from "./scroll_events" import { setScrollLeft } from "./scroll_events"
import { restartBlink } from "./selection" import { restartBlink } from "./selection"
...@@ -147,12 +146,7 @@ function endOperation_finish(op) { ...@@ -147,12 +146,7 @@ function endOperation_finish(op) {
display.scrollbars.setScrollTop(doc.scrollTop) display.scrollbars.setScrollTop(doc.scrollTop)
display.scroller.scrollTop = doc.scrollTop display.scroller.scrollTop = doc.scrollTop
} }
if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) { if (op.scrollLeft != null) setScrollLeft(cm, op.scrollLeft, true, true)
doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft))
display.scrollbars.setScrollLeft(doc.scrollLeft)
display.scroller.scrollLeft = doc.scrollLeft
alignHorizontally(cm)
}
// If we need to scroll a specific position into view, do so. // If we need to scroll a specific position into view, do so.
if (op.scrollToPos) { if (op.scrollToPos) {
let rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), let rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),
......
...@@ -18,8 +18,8 @@ export function setScrollTop(cm, val) { ...@@ -18,8 +18,8 @@ export function setScrollTop(cm, val) {
} }
// Sync scroller and scrollbar, ensure the gutter elements are // Sync scroller and scrollbar, ensure the gutter elements are
// aligned. // aligned.
export function setScrollLeft(cm, val, isScroller) { export function setScrollLeft(cm, val, isScroller, forceScroll) {
if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) return
val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth) val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth)
cm.doc.scrollLeft = val cm.doc.scrollLeft = val
alignHorizontally(cm) alignHorizontally(cm)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment