🐎 Use ids instead of classes

This commit is contained in:
Antonio Scandurra
2015-12-03 11:52:10 +01:00
parent 937116a280
commit f22bd5d0ae
4 changed files with 50 additions and 53 deletions

View File

@@ -1273,8 +1273,8 @@ describe "TextEditorPresenter", ->
expect(lineStateForScreenRow(presenter, 0).endOfLineInvisibles).toEqual [atom.config.get('editor.invisibles.eol')]
expect(lineStateForScreenRow(presenter, 1).endOfLineInvisibles).toEqual [atom.config.get('editor.invisibles.cr'), atom.config.get('editor.invisibles.eol')]
describe ".hasBlockDecorations", ->
it "is true when block decorations are present before a line, both initially and when decorations change", ->
describe ".blockDecorations", ->
it "contains all block decorations that are present before a line, both initially and when decorations change", ->
blockDecoration1 = editor.addBlockDecorationForScreenRow(0)
presenter = buildPresenter()
blockDecoration2 = editor.addBlockDecorationForScreenRow(3)
@@ -1282,58 +1282,58 @@ describe "TextEditorPresenter", ->
waitsForStateToUpdate presenter
runs ->
expect(lineStateForScreenRow(presenter, 0).hasBlockDecorations).toBe(true)
expect(lineStateForScreenRow(presenter, 1).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 2).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 3).hasBlockDecorations).toBe(true)
expect(lineStateForScreenRow(presenter, 4).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 5).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 6).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 7).hasBlockDecorations).toBe(true)
expect(lineStateForScreenRow(presenter, 8).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 9).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 10).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 11).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 12).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 0).blockDecorations).toEqual([blockDecoration1])
expect(lineStateForScreenRow(presenter, 1).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 2).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 3).blockDecorations).toEqual([blockDecoration2])
expect(lineStateForScreenRow(presenter, 4).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 5).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 6).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 7).blockDecorations).toEqual([blockDecoration3])
expect(lineStateForScreenRow(presenter, 8).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 9).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 10).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 11).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 12).blockDecorations).toEqual([])
waitsForStateToUpdate presenter, ->
blockDecoration1.getMarker().setHeadBufferPosition([1, 0])
blockDecoration2.getMarker().setHeadBufferPosition([5, 0])
blockDecoration2.getMarker().setHeadBufferPosition([9, 0])
blockDecoration3.getMarker().setHeadBufferPosition([9, 0])
runs ->
expect(lineStateForScreenRow(presenter, 0).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 1).hasBlockDecorations).toBe(true)
expect(lineStateForScreenRow(presenter, 2).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 3).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 4).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 5).hasBlockDecorations).toBe(true)
expect(lineStateForScreenRow(presenter, 6).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 7).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 8).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 9).hasBlockDecorations).toBe(true)
expect(lineStateForScreenRow(presenter, 10).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 11).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 12).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 0).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 1).blockDecorations).toEqual([blockDecoration1])
expect(lineStateForScreenRow(presenter, 2).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 3).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 4).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 5).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 6).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 7).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 8).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 9).blockDecorations).toEqual([blockDecoration3, blockDecoration2])
expect(lineStateForScreenRow(presenter, 10).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 11).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 12).blockDecorations).toEqual([])
waitsForStateToUpdate presenter, ->
blockDecoration1.destroy()
blockDecoration3.destroy()
runs ->
expect(lineStateForScreenRow(presenter, 0).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 1).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 2).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 3).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 4).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 5).hasBlockDecorations).toBe(true)
expect(lineStateForScreenRow(presenter, 6).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 7).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 8).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 9).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 10).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 11).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 12).hasBlockDecorations).toBe(false)
expect(lineStateForScreenRow(presenter, 0).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 1).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 2).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 3).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 4).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 5).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 6).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 7).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 8).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 9).blockDecorations).toEqual([blockDecoration2])
expect(lineStateForScreenRow(presenter, 10).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 11).blockDecorations).toEqual([])
expect(lineStateForScreenRow(presenter, 12).blockDecorations).toEqual([])
describe ".decorationClasses", ->
it "adds decoration classes to the relevant line state objects, both initially and when decorations change", ->

View File

@@ -47,7 +47,7 @@ class BlockDecorationsComponent
createAndAppendBlockDecorationNode: (id) ->
blockDecorationState = @newState.blockDecorations[id]
blockDecorationNode = @views.getView(blockDecorationState.decoration.getProperties().item)
blockDecorationNode.classList.add("block-decoration-row-#{blockDecorationState.screenRow}")
blockDecorationNode.id = "atom--block-decoration-#{id}"
unless blockDecorationState.isVisible
blockDecorationNode.classList.add("atom--invisible-block-decoration")
@@ -57,14 +57,9 @@ class BlockDecorationsComponent
updateBlockDecorationNode: (id) ->
newBlockDecorationState = @newState.blockDecorations[id]
oldBlockDecorationState = @oldState.blockDecorations[id]
blockDecorationNode = @blockDecorationNodesById[id]
if newBlockDecorationState.isVisible
blockDecorationNode.classList.remove("atom--invisible-block-decoration")
else
blockDecorationNode.classList.add("atom--invisible-block-decoration")
if newBlockDecorationState.screenRow isnt oldBlockDecorationState.screenRow
blockDecorationNode.classList.remove("block-decoration-row-#{oldBlockDecorationState.screenRow}")
blockDecorationNode.classList.add("block-decoration-row-#{newBlockDecorationState.screenRow}")

View File

@@ -138,11 +138,11 @@ class LinesTileComponent
@updateBlockDecorationInsertionPoint(id)
updateBlockDecorationInsertionPoint: (id) ->
{screenRow} = @newTileState.lines[id]
{blockDecorations, screenRow} = @newTileState.lines[id]
elementsIds = blockDecorations.map((d) -> "#atom--block-decoration-#{d.id}").join(',')
if insertionPoint = @insertionPointsByLineId[id]
insertionPoint.dataset.screenRow = screenRow
insertionPoint.setAttribute("select", ".block-decoration-row-#{screenRow}")
insertionPoint.setAttribute("select", elementsIds)
findNodeNextTo: (node) ->
for nextNode, index in @domNode.children

View File

@@ -499,7 +499,8 @@ class TextEditorPresenter
lineState = tileState.lines[line.id]
lineState.screenRow = screenRow
lineState.decorationClasses = @lineDecorationClassesForRow(screenRow)
lineState.hasBlockDecorations = blockDecorations.length isnt 0
lineState.blockDecorations = blockDecorations
lineState.hasBlockDecorations = blockDecorations.length > 0
else
tileState.lines[line.id] =
screenRow: screenRow
@@ -516,7 +517,8 @@ class TextEditorPresenter
tabLength: line.tabLength
fold: line.fold
decorationClasses: @lineDecorationClassesForRow(screenRow)
hasBlockDecorations: blockDecorations.length isnt 0
blockDecorations: blockDecorations
hasBlockDecorations: blockDecorations.length > 0
for id, line of tileState.lines
delete tileState.lines[id] unless visibleLineIds.hasOwnProperty(id)