Skip to content

Commit

Permalink
Move {set,update}Scroll{Left,Top} to display/scrolling
Browse files Browse the repository at this point in the history
  • Loading branch information
adrianheine committed Apr 26, 2017
1 parent a565815 commit 4c3fa24
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 37 deletions.
3 changes: 1 addition & 2 deletions src/display/operations.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ import { finishOperation, pushOperation } from "../util/operation_group"

import { ensureFocus } from "./focus"
import { measureForScrollbars, updateScrollbars } from "./scrollbars"
import { setScrollLeft, setScrollTop } from "./scroll_events"
import { restartBlink } from "./selection"
import { maybeScrollWindow, scrollPosIntoView } from "./scrolling"
import { maybeScrollWindow, scrollPosIntoView, setScrollLeft, setScrollTop } from "./scrolling"
import { DisplayUpdate, maybeClipScrollbars, postUpdateDisplay, setDocumentHeight, updateDisplayIfNeeded } from "./update_display"
import { updateHeightsInViewport } from "./update_lines"

Expand Down
33 changes: 2 additions & 31 deletions src/display/scroll_events.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,8 @@
import { chrome, gecko, ie, mac, presto, safari, webkit } from "../util/browser"
import { e_preventDefault } from "../util/event"

import { startWorker } from "./highlight_worker"
import { alignHorizontally } from "./line_numbers"
import { updateDisplaySimple} from "./update_display"

// Sync the scrollable area and scrollbars, ensure the viewport
// covers the visible area.
export function updateScrollTop(cm, val) {
if (Math.abs(cm.doc.scrollTop - val) < 2) return
if (!gecko) updateDisplaySimple(cm, {top: val})
setScrollTop(cm, val)
if (gecko) updateDisplaySimple(cm)
startWorker(cm, 100)
}
export function setScrollTop(cm, val, forceScroll) {
val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val)
if (cm.display.scroller.scrollTop == val && !forceScroll) return
cm.doc.scrollTop = val
cm.display.scrollbars.setScrollTop(val)
cm.display.scroller.scrollTop = val
}

// Sync scroller and scrollbar, ensure the gutter elements are
// aligned.
export function setScrollLeft(cm, val, isScroller, forceScroll) {
val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth)
if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) return
cm.doc.scrollLeft = val
alignHorizontally(cm)
if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val
cm.display.scrollbars.setScrollLeft(val)
}
import { updateDisplaySimple } from "./update_display"
import { setScrollLeft, updateScrollTop } from "./scrolling"

// Since the delta values reported on mouse wheel events are
// unstandardized between browsers and even browser versions, and
Expand Down
2 changes: 1 addition & 1 deletion src/display/scrollbars.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { ie, ie_version, mac, mac_geMountainLion } from "../util/browser"
import { updateHeightsInViewport } from "./update_lines"
import { Delayed } from "../util/misc"

import { setScrollLeft, updateScrollTop } from "./scroll_events"
import { setScrollLeft, updateScrollTop } from "./scrolling"

// SCROLLBARS

Expand Down
33 changes: 31 additions & 2 deletions src/display/scrolling.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { Pos } from "../line/pos"
import { cursorCoords, displayHeight, displayWidth, estimateCoords, paddingTop, paddingVert, scrollGap, textHeight } from "../measurement/position_measurement"
import { phantom } from "../util/browser"
import { gecko, phantom } from "../util/browser"
import { elt } from "../util/dom"
import { signalDOMEvent } from "../util/event"

import { setScrollLeft, updateScrollTop } from "./scroll_events"
import { startWorker } from "./highlight_worker"
import { alignHorizontally } from "./line_numbers"
import { updateDisplaySimple } from "./update_display"

// SCROLLING THINGS INTO VIEW

Expand Down Expand Up @@ -135,3 +137,30 @@ export function resolveScrollToPos(cm) {
cm.scrollTo(sPos.scrollLeft, sPos.scrollTop)
}
}
// Sync the scrollable area and scrollbars, ensure the viewport
// covers the visible area.
export function updateScrollTop(cm, val) {
if (Math.abs(cm.doc.scrollTop - val) < 2) return
if (!gecko) updateDisplaySimple(cm, {top: val})
setScrollTop(cm, val)
if (gecko) updateDisplaySimple(cm)
startWorker(cm, 100)
}
export function setScrollTop(cm, val, forceScroll) {
val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val)
if (cm.display.scroller.scrollTop == val && !forceScroll) return
cm.doc.scrollTop = val
cm.display.scrollbars.setScrollTop(val)
cm.display.scroller.scrollTop = val
}

// Sync scroller and scrollbar, ensure the gutter elements are
// aligned.
export function setScrollLeft(cm, val, isScroller, forceScroll) {
val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth)
if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) return
cm.doc.scrollLeft = val
alignHorizontally(cm)
if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val
cm.display.scrollbars.setScrollLeft(val)
}
3 changes: 2 additions & 1 deletion src/edit/CodeMirror.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import { setGuttersForLineNumbers, updateGutters } from "../display/gutters"
import { maybeUpdateLineNumberWidth } from "../display/line_numbers"
import { endOperation, operation, startOperation } from "../display/operations"
import { initScrollbars } from "../display/scrollbars"
import { onScrollWheel, setScrollLeft, updateScrollTop } from "../display/scroll_events"
import { onScrollWheel } from "../display/scroll_events"
import { setScrollLeft, updateScrollTop } from "../display/scrolling"
import { clipPos, Pos } from "../line/pos"
import { posFromMouse } from "../measurement/position_measurement"
import { eventInWidget } from "../measurement/widgets"
Expand Down

0 comments on commit 4c3fa24

Please sign in to comment.