Integrate block decorations in the custom lines rendering routine

This commit is contained in:
Antonio Scandurra
2017-04-08 13:52:56 +02:00
parent 919c5a022b
commit 7474b4b678
2 changed files with 132 additions and 49 deletions

View File

@@ -1,4 +1,4 @@
const {it, fit, ffit, fffit, beforeEach, afterEach, conditionPromise} = require('./async-spec-helpers')
const {it, fit, ffit, fffit, beforeEach, afterEach, conditionPromise, timeoutPromise} = require('./async-spec-helpers')
const TextEditorComponent = require('../src/text-editor-component')
const TextEditor = require('../src/text-editor')
@@ -1268,7 +1268,7 @@ describe('TextEditorComponent', () => {
// move decoration2 and decoration3
decoration2.getMarker().setHeadScreenPosition([1, 0])
decoration3.getMarker().setHeadScreenPosition([3, 0])
decoration3.getMarker().setHeadScreenPosition([0, 0])
await component.getNextUpdatePromise()
expect(component.getRenderedStartRow()).toBe(0)
expect(component.getRenderedEndRow()).toBe(6)
@@ -1278,24 +1278,23 @@ describe('TextEditorComponent', () => {
getElementHeight(item4) + getElementHeight(item5) + getElementHeight(item6)
)
expect(tileNodeForScreenRow(component, 0).offsetHeight).toBe(
3 * component.getLineHeight() + getElementHeight(item2)
3 * component.getLineHeight() + getElementHeight(item2) + getElementHeight(item3)
)
expect(tileNodeForScreenRow(component, 3).offsetHeight).toBe(
3 * component.getLineHeight() + getElementHeight(item3)
3 * component.getLineHeight()
)
expect(element.querySelectorAll('.line').length).toBe(6)
expect(element.contains(item1)).toBe(false)
expect(item2.previousSibling).toBe(lineNodeForScreenRow(component, 0))
expect(item2.nextSibling).toBe(lineNodeForScreenRow(component, 1))
expect(item3.previousSibling).toBeNull()
expect(item3.nextSibling).toBe(lineNodeForScreenRow(component, 3))
expect(item3.nextSibling).toBe(lineNodeForScreenRow(component, 0))
expect(element.contains(item4)).toBe(false)
expect(element.contains(item5)).toBe(false)
expect(element.contains(item6)).toBe(false)
// change the text
editor.setCursorScreenPosition([0, 5])
editor.insertNewline()
editor.getBuffer().setTextInRange([[0, 5], [0, 5]], '\n\n')
await component.getNextUpdatePromise()
expect(component.getRenderedStartRow()).toBe(0)
expect(component.getRenderedEndRow()).toBe(6)
@@ -1305,17 +1304,17 @@ describe('TextEditorComponent', () => {
getElementHeight(item4) + getElementHeight(item5) + getElementHeight(item6)
)
expect(tileNodeForScreenRow(component, 0).offsetHeight).toBe(
3 * component.getLineHeight() + getElementHeight(item2)
3 * component.getLineHeight() + getElementHeight(item3)
)
expect(tileNodeForScreenRow(component, 3).offsetHeight).toBe(
3 * component.getLineHeight() + getElementHeight(item3)
3 * component.getLineHeight() + getElementHeight(item2)
)
expect(element.querySelectorAll('.line').length).toBe(6)
expect(element.contains(item1)).toBe(false)
expect(item2.previousSibling).toBe(lineNodeForScreenRow(component, 1))
expect(item2.nextSibling).toBe(lineNodeForScreenRow(component, 2))
expect(item3.previousSibling).toBe(lineNodeForScreenRow(component, 3))
expect(item3.nextSibling).toBe(lineNodeForScreenRow(component, 4))
expect(item2.previousSibling).toBeNull()
expect(item2.nextSibling).toBe(lineNodeForScreenRow(component, 3))
expect(item3.previousSibling).toBeNull()
expect(item3.nextSibling).toBe(lineNodeForScreenRow(component, 0))
expect(element.contains(item4)).toBe(false)
expect(element.contains(item5)).toBe(false)
expect(element.contains(item6)).toBe(false)
@@ -1331,17 +1330,17 @@ describe('TextEditorComponent', () => {
getElementHeight(item4) + getElementHeight(item5) + getElementHeight(item6)
)
expect(tileNodeForScreenRow(component, 0).offsetHeight).toBe(
3 * component.getLineHeight() + getElementHeight(item2)
3 * component.getLineHeight() + getElementHeight(item2) + getElementHeight(item3)
)
expect(tileNodeForScreenRow(component, 3).offsetHeight).toBe(
3 * component.getLineHeight() + getElementHeight(item3)
3 * component.getLineHeight()
)
expect(element.querySelectorAll('.line').length).toBe(6)
expect(element.contains(item1)).toBe(false)
expect(item2.previousSibling).toBe(lineNodeForScreenRow(component, 0))
expect(item2.nextSibling).toBe(lineNodeForScreenRow(component, 1))
expect(item3.previousSibling).toBeNull()
expect(item3.nextSibling).toBe(lineNodeForScreenRow(component, 3))
expect(item3.nextSibling).toBe(lineNodeForScreenRow(component, 0))
expect(element.contains(item4)).toBe(false)
expect(element.contains(item5)).toBe(false)
expect(element.contains(item6)).toBe(false)