mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Show foldable icon on the last screen row belonging to a buffer row
This commit is contained in:
@@ -210,6 +210,16 @@ describe('TextEditorComponent', () => {
|
||||
expect(lineNumberNodeForScreenRow(component, 0).querySelector('.foldable')).toBeNull()
|
||||
})
|
||||
|
||||
it('shows the foldable icon on the last screen row of a buffer row that can be folded', async () => {
|
||||
const {component, element, editor} = buildComponent({text: 'abc\n de\nfghijklm\n no', softWrapped: true})
|
||||
await setEditorWidthInCharacters(component, 5)
|
||||
expect(lineNumberNodeForScreenRow(component, 0).classList.contains('foldable')).toBe(true)
|
||||
expect(lineNumberNodeForScreenRow(component, 1).classList.contains('foldable')).toBe(false)
|
||||
expect(lineNumberNodeForScreenRow(component, 2).classList.contains('foldable')).toBe(false)
|
||||
expect(lineNumberNodeForScreenRow(component, 3).classList.contains('foldable')).toBe(true)
|
||||
expect(lineNumberNodeForScreenRow(component, 4).classList.contains('foldable')).toBe(false)
|
||||
})
|
||||
|
||||
it('renders dummy vertical and horizontal scrollbars when content overflows', async () => {
|
||||
const {component, element, editor} = buildComponent({height: 100, width: 100})
|
||||
const verticalScrollbar = component.refs.verticalScrollbar.element
|
||||
|
||||
@@ -823,7 +823,7 @@ class TextEditorComponent {
|
||||
const endRow = this.getRenderedEndRow()
|
||||
const renderedRowCount = this.getRenderedRowCount()
|
||||
|
||||
const bufferRows = model.bufferRowsForScreenRows(startRow, endRow - 1)
|
||||
const bufferRows = model.bufferRowsForScreenRows(startRow, endRow)
|
||||
const keys = new Array(endRow - startRow)
|
||||
const foldableFlags = new Array(endRow - startRow)
|
||||
const softWrappedFlags = new Array(endRow - startRow)
|
||||
@@ -836,17 +836,26 @@ class TextEditorComponent {
|
||||
if (bufferRow === previousBufferRow) {
|
||||
softWrapCount++
|
||||
softWrappedFlags[i] = true
|
||||
foldableFlags[i] = false
|
||||
keys[i] = bufferRow + '-' + softWrapCount
|
||||
} else {
|
||||
softWrapCount = 0
|
||||
softWrappedFlags[i] = false
|
||||
foldableFlags[i] = model.isFoldableAtBufferRow(bufferRow)
|
||||
keys[i] = bufferRow
|
||||
}
|
||||
|
||||
const nextBufferRow = bufferRows[i + 1]
|
||||
if (bufferRow !== nextBufferRow) {
|
||||
foldableFlags[i] = model.isFoldableAtBufferRow(bufferRow)
|
||||
} else {
|
||||
foldableFlags[i] = false
|
||||
}
|
||||
|
||||
previousBufferRow = bufferRow
|
||||
}
|
||||
|
||||
// Delete extra buffer row at the end because it's not currently on screen.
|
||||
bufferRows.pop()
|
||||
|
||||
this.lineNumbersToRender.bufferRows = bufferRows
|
||||
this.lineNumbersToRender.keys = keys
|
||||
this.lineNumbersToRender.foldableFlags = foldableFlags
|
||||
|
||||
Reference in New Issue
Block a user