From 4c3fa2468f3f76cb5fb661163358117eaf2b38cf Mon Sep 17 00:00:00 2001
From: Adrian Heine <mail@adrianheine.de>
Date: Wed, 26 Apr 2017 10:18:12 +0200
Subject: [PATCH] Move {set,update}Scroll{Left,Top} to display/scrolling

---
 src/display/operations.js    |  3 +--
 src/display/scroll_events.js | 33 ++-------------------------------
 src/display/scrollbars.js    |  2 +-
 src/display/scrolling.js     | 33 +++++++++++++++++++++++++++++++--
 src/edit/CodeMirror.js       |  3 ++-
 5 files changed, 37 insertions(+), 37 deletions(-)

diff --git a/src/display/operations.js b/src/display/operations.js
index 566eb5aa8..15a041c6a 100644
--- a/src/display/operations.js
+++ b/src/display/operations.js
@@ -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"
 
diff --git a/src/display/scroll_events.js b/src/display/scroll_events.js
index cc4b50b86..d3902809e 100644
--- a/src/display/scroll_events.js
+++ b/src/display/scroll_events.js
@@ -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
diff --git a/src/display/scrollbars.js b/src/display/scrollbars.js
index d2f73c915..27060d18e 100644
--- a/src/display/scrollbars.js
+++ b/src/display/scrollbars.js
@@ -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
 
diff --git a/src/display/scrolling.js b/src/display/scrolling.js
index 5d06a63b5..12a13b454 100644
--- a/src/display/scrolling.js
+++ b/src/display/scrolling.js
@@ -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
 
@@ -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)
+}
diff --git a/src/edit/CodeMirror.js b/src/edit/CodeMirror.js
index 5f66c9f4f..1b2758ec0 100644
--- a/src/edit/CodeMirror.js
+++ b/src/edit/CodeMirror.js
@@ -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"
-- 
GitLab