From 368f1b8fbdf130dc538579a0bf1e649678a21cea Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 29 Feb 2012 17:55:47 -0700 Subject: [PATCH] LineMap.clipScreenPosition relies entirely on translatePosition --- src/atom/line-map.coffee | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/atom/line-map.coffee b/src/atom/line-map.coffee index 19a4f1ba4..afd3f1b1a 100644 --- a/src/atom/line-map.coffee +++ b/src/atom/line-map.coffee @@ -38,10 +38,13 @@ class LineMap @linesByDelta('bufferDelta', startRow, endRow) bufferLineCount: -> - @traverseByDelta('bufferDelta', new Point(Infinity, 0)).bufferDelta.row + @lineCountByDelta('bufferDelta') screenLineCount: -> - @traverseByDelta('screenDelta', new Point(Infinity, 0)).screenDelta.row + @lineCountByDelta('screenDelta') + + lineCountByDelta: (deltaType) -> + @traverseByDelta(deltaType, new Point(Infinity, 0))[deltaType].row lastScreenRow: -> @screenLineCount() - 1 @@ -63,12 +66,6 @@ class LineMap new Range(start, end) clipScreenPosition: (screenPosition, options) -> - screenPosition = Point.fromObject(screenPosition) - maxScreenRow = @lastScreenRow() - if screenPosition.row > maxScreenRow - screenPosition.row = maxScreenRow - screenPosition.column = Infinity - @translatePosition('screenDelta', 'screenDelta', screenPosition, options) spliceByDelta: (deltaType, startRow, rowCount, lineFragments) -> @@ -114,6 +111,11 @@ class LineMap sourcePosition.row = 0 sourcePosition.column = 0 + maxSourceRow = @lineCountByDelta(sourceDeltaType) - 1 + if sourcePosition.row > maxSourceRow + sourcePosition.row = maxSourceRow + sourcePosition.column = Infinity + traversalResult = @traverseByDelta(sourceDeltaType, sourcePosition) lastLineFragment = traversalResult.lastLineFragment sourceDelta = traversalResult[sourceDeltaType]