diff --git a/src/lines-component.coffee b/src/lines-component.coffee index fda77a76a..c4341bbbf 100644 --- a/src/lines-component.coffee +++ b/src/lines-component.coffee @@ -48,10 +48,6 @@ class LinesComponent @domNode.style.height = @newState.scrollHeight + 'px' @oldState.scrollHeight = @newState.scrollHeight - if @newState.scrollLeft isnt @oldState.scrollLeft - @domNode.style['-webkit-transform'] = "translate3d(#{-@newState.scrollLeft}px, 0, 0px)" - @oldState.scrollLeft = @newState.scrollLeft - if @newState.backgroundColor isnt @oldState.backgroundColor @domNode.style.backgroundColor = @newState.backgroundColor @oldState.backgroundColor = @newState.backgroundColor diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index c97fb11a0..ce17243e4 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -764,15 +764,14 @@ class TextEditorComponent screenPositionForMouseEvent: (event) -> pixelPosition = @pixelPositionForMouseEvent(event) - pixelPosition.top += @presenter.scrollTop @editor.screenPositionForPixelPosition(pixelPosition) pixelPositionForMouseEvent: (event) -> {clientX, clientY} = event linesClientRect = @linesComponent.getDomNode().getBoundingClientRect() - top = clientY - linesClientRect.top - left = clientX - linesClientRect.left + top = clientY - linesClientRect.top + @presenter.scrollTop + left = clientX - linesClientRect.left + @presenter.scrollLeft {top, left} getModel: -> diff --git a/src/text-editor-presenter.coffee b/src/text-editor-presenter.coffee index 6b38f0114..0418fb6c2 100644 --- a/src/text-editor-presenter.coffee +++ b/src/text-editor-presenter.coffee @@ -327,6 +327,7 @@ class TextEditorPresenter isNewTile = not @state.content.tiles.hasOwnProperty(startRow) tile = @state.content.tiles[startRow] ?= {} tile.top = startRow * @lineHeight - @scrollTop + tile.left = -@scrollLeft tile.height = @tileSize * @lineHeight tile.newlyCreated = isNewTile tile.display = "block" @@ -410,10 +411,8 @@ class TextEditorPresenter pixelPosition = @pixelPositionForScreenPosition(screenPosition, true) - {scrollLeft} = @state.content - top = pixelPosition.top + @lineHeight - left = pixelPosition.left + @gutterWidth - scrollLeft + left = pixelPosition.left + @gutterWidth if overlayDimensions = @overlayDimensions[decoration.id] {itemWidth, itemHeight, contentMargin} = overlayDimensions @@ -795,8 +794,10 @@ class TextEditorPresenter @model.setScrollLeft(scrollLeft) @shouldUpdateHorizontalScrollState = true @shouldUpdateHiddenInputState = true - @shouldUpdateCursorsState = true unless oldScrollLeft? + @shouldUpdateCursorsState = true @shouldUpdateOverlaysState = true + @shouldUpdateDecorations = true + @shouldUpdateTilesState = true @emitDidUpdateState() @@ -1034,6 +1035,7 @@ class TextEditorPresenter column += charLength top -= @scrollTop + left -= @scrollLeft {top, left} hasPixelRectRequirements: -> diff --git a/src/tile-component.coffee b/src/tile-component.coffee index 5bd299d79..197a9adce 100644 --- a/src/tile-component.coffee +++ b/src/tile-component.coffee @@ -43,9 +43,10 @@ class TileComponent @domNode.style.height = @newState.tiles[@id].height + 'px' @oldState.tiles[@id]?.height = @newState.tiles[@id].height - if @newState.tiles[@id].top isnt @oldState.tiles[@id]?.top - @domNode.style['-webkit-transform'] = "translate3d(0, #{@newState.tiles[@id].top}px, 0px)" + if (@newState.tiles[@id].top isnt @oldState.tiles[@id]?.top) or (@newState.tiles[@id].left isnt @oldState.tiles[@id]?.left) + @domNode.style['-webkit-transform'] = "translate3d(#{@newState.tiles[@id].left}px, #{@newState.tiles[@id].top}px, 0px)" @oldState.tiles[@id]?.top = @newState.tiles[@id].top + @oldState.tiles[@id]?.left = @newState.tiles[@id].left if @newState.tiles[@id].newlyCreated newLineIds = []