This commit is contained in:
Antonio Scandurra
2015-05-14 19:08:07 +02:00
parent 265090e7bb
commit 5201e4547b
3 changed files with 5 additions and 28 deletions

View File

@@ -80,8 +80,7 @@ class LinesComponent
removeTileNode: (id) ->
node = @tileComponentsByTileId[id].getDomNode()
node.style.display = "none"
@freeDomNodes.push(node)
node.remove()
delete @tileComponentsByTileId[id]
delete @oldState.tiles[id]
@@ -94,10 +93,9 @@ class LinesComponent
if @oldState.tiles.hasOwnProperty(id)
tileComponent = @tileComponentsByTileId[id]
else
domNode = @freeDomNodes.pop()
tileComponent = @tileComponentsByTileId[id] = new TileComponent({id, @presenter, domNode})
tileComponent = @tileComponentsByTileId[id] = new TileComponent({id, @presenter})
@domNode.appendChild(tileComponent.getDomNode()) unless domNode?
@domNode.appendChild(tileComponent.getDomNode())
@oldState.tiles[id] = cloneObject(tileState)
tileComponent.updateSync(@newState)

View File

@@ -319,12 +319,10 @@ class TextEditorPresenter
for startRow in @getVisibleTilesRange() by @tileSize
endRow = Math.min(@model.getScreenLineCount(), startRow + @tileSize)
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"
@updateLinesState(tile, startRow, endRow)

View File

@@ -50,27 +50,8 @@ class TileComponent
@oldTileState.top = @newTileState.top
@oldTileState.left = @newTileState.left
if @newTileState.newlyCreated
newLineIds = []
newLinesHTML = ""
for id, lineState of @newTileState.lines
newLineIds.push(id)
newLinesHTML += @buildLineHTML(id)
@screenRowsByLineId[id] = lineState.screenRow
@lineIdsByScreenRow[lineState.screenRow] = id
@oldTileState.lines[id] = cloneObject(lineState)
return if newLineIds.length is 0
@domNode.innerHTML = newLinesHTML
newLineNodes = _.toArray(@domNode.children)
for id, i in newLineIds
lineNode = newLineNodes[i]
@lineNodesByLineId[id] = lineNode
else
@removeLineNodes() unless @oldState.indentGuidesVisible is @newState.indentGuidesVisible
@updateLineNodes()
@removeLineNodes() unless @oldState.indentGuidesVisible is @newState.indentGuidesVisible
@updateLineNodes()
if @newState.scrollWidth isnt @oldState.scrollWidth
@domNode.style.width = @newState.scrollWidth + 'px'