diff --git a/spec/text-editor-component-spec.js b/spec/text-editor-component-spec.js index 5a7fccffb..def4d68e7 100644 --- a/spec/text-editor-component-spec.js +++ b/spec/text-editor-component-spec.js @@ -2511,6 +2511,19 @@ describe('TextEditorComponent', () => { editor.setFirstVisibleScreenRow(11) expect(component.getFirstVisibleRow()).toBe(9) }) + + it('delegates setFirstVisibleScreenColumn and getFirstVisibleScreenColumn to the component', async () => { + const {component, element, editor} = buildComponent({rowsPerTile: 3, autoHeight: false}) + element.style.width = 30 * component.getBaseCharacterWidth() + 'px' + await component.getNextUpdatePromise() + + expect(editor.getFirstVisibleScreenColumn()).toBe(0) + component.setScrollLeft(5.5 * component.getBaseCharacterWidth()) + expect(editor.getFirstVisibleScreenColumn()).toBe(5) + + editor.setFirstVisibleScreenColumn(12) + expect(component.getScrollLeft()).toBe(Math.round(12 * component.getBaseCharacterWidth())) + }) }) }) diff --git a/src/text-editor-component.js b/src/text-editor-component.js index 369395d7f..c57e58715 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -2325,6 +2325,14 @@ class TextEditorComponent { ) } + getFirstVisibleColumn () { + return Math.floor(this.getScrollLeft() / this.getBaseCharacterWidth()) + } + + setFirstVisibleColumn (column) { + this.setScrollLeft(column * this.getBaseCharacterWidth()) + } + getVisibleTileCount () { return Math.floor((this.getLastVisibleRow() - this.getFirstVisibleRow()) / this.getRowsPerTile()) + 2 } diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 21d80135d..31673736b 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -3681,8 +3681,11 @@ class TextEditor extends Model getVisibleRowRange: -> [@getFirstVisibleScreenRow(), @getLastVisibleScreenRow()] - setFirstVisibleScreenColumn: (@firstVisibleScreenColumn) -> - getFirstVisibleScreenColumn: -> @firstVisibleScreenColumn + setFirstVisibleScreenColumn: (column) -> + @getElement().component.setFirstVisibleColumn(column) + + getFirstVisibleScreenColumn: -> + @getElement().component.getFirstVisibleColumn() getScrollTop: -> Grim.deprecate("This is now a view method. Call TextEditorElement::getScrollTop instead.")