diff --git a/src/editor-component.coffee b/src/editor-component.coffee index de37124c9..113de150d 100644 --- a/src/editor-component.coffee +++ b/src/editor-component.coffee @@ -62,7 +62,7 @@ EditorComponent = React.createClass lineHeight: lineHeightInPixels, renderedRowRange, @pendingChanges, scrollTop, scrollLeft, scrollHeight, scrollWidth, @scrollingVertically, @cursorsMoved, @selectionChanged, @selectionAdded, cursorBlinkResumeDelay, - @onInputFocused, @onInputBlurred + @onInputFocused, @onInputBlurred, @mouseWheelScreenRow } ScrollbarComponent diff --git a/src/editor-scroll-view-component.coffee b/src/editor-scroll-view-component.coffee index b03200a1c..1363c5e67 100644 --- a/src/editor-scroll-view-component.coffee +++ b/src/editor-scroll-view-component.coffee @@ -17,7 +17,7 @@ EditorScrollViewComponent = React.createClass render: -> {editor, fontSize, fontFamily, lineHeight, showIndentGuide} = @props - {renderedRowRange, pendingChanges, scrollTop, scrollLeft, scrollHeight, scrollWidth, scrollingVertically} = @props + {renderedRowRange, pendingChanges, scrollTop, scrollLeft, scrollHeight, scrollWidth, scrollingVertically, mouseWheelScreenRow} = @props {selectionChanged, selectionAdded, cursorBlinkResumeDelay, cursorsMoved, onInputFocused, onInputBlurred} = @props if @isMounted() @@ -37,7 +37,7 @@ EditorScrollViewComponent = React.createClass LinesComponent { ref: 'lines', editor, fontSize, fontFamily, lineHeight, showIndentGuide, renderedRowRange, pendingChanges, scrollTop, scrollLeft, scrollingVertically, - selectionChanged, scrollHeight, scrollWidth + selectionChanged, scrollHeight, scrollWidth, mouseWheelScreenRow } componentDidMount: -> diff --git a/src/lines-component.coffee b/src/lines-component.coffee index 2e2bb52d0..1cae8b8fb 100644 --- a/src/lines-component.coffee +++ b/src/lines-component.coffee @@ -64,15 +64,17 @@ LinesComponent = React.createClass @appendOrUpdateVisibleLineNodes(visibleLines, startRow) removeLineNodes: (visibleLines=[]) -> + {mouseWheelScreenRow} = @props visibleLineIds = new Set visibleLineIds.add(line.id.toString()) for line in visibleLines node = @getDOMNode() for lineId, lineNode of @lineNodesByLineId when not visibleLineIds.has(lineId) - delete @lineNodesByLineId[lineId] screenRow = @screenRowsByLineId[lineId] - delete @lineIdsByScreenRow[screenRow] if @lineIdsByScreenRow[screenRow] is lineId - delete @screenRowsByLineId[lineId] - node.removeChild(lineNode) + unless screenRow is mouseWheelScreenRow + delete @lineNodesByLineId[lineId] + delete @lineIdsByScreenRow[screenRow] if @lineIdsByScreenRow[screenRow] is lineId + delete @screenRowsByLineId[lineId] + node.removeChild(lineNode) appendOrUpdateVisibleLineNodes: (visibleLines, startRow) -> {lineHeight} = @props @@ -112,7 +114,7 @@ LinesComponent = React.createClass {editor, mini, showIndentGuide, lineHeight} = @props {tokens, text, lineEnding, fold, isSoftWrapped, indentLevel} = line top = screenRow * lineHeight - lineHTML = "
" + lineHTML = "
" if text is "" lineHTML += @buildEmptyLineInnerHTML(line)