mirror of
https://github.com/atom/atom.git
synced 2026-01-23 05:48:10 -05:00
Disable auto-scroll and make overflow-x hidden when soft-wrap is enabled
This commit is contained in:
@@ -353,6 +353,60 @@ describe "Editor", ->
|
||||
editor.setCursorScreenPosition([2, 3])
|
||||
expect(editor.lines.scrollLeft()).toBe(0)
|
||||
|
||||
describe "when soft-wrap is on", ->
|
||||
beforeEach ->
|
||||
editor.setSoftWrap(true)
|
||||
|
||||
it "does not scroll the buffer", ->
|
||||
editor.width(charWidth * 30)
|
||||
|
||||
# moving right
|
||||
editor.setCursorScreenPosition([2, 24])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
editor.setCursorScreenPosition([2, 25])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
editor.setCursorScreenPosition([2, 28])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
# moving left
|
||||
editor.setCursorScreenPosition([2, 9])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
editor.setCursorScreenPosition([2, 8])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
editor.setCursorScreenPosition([2, 5])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
describe "when soft-wrap is on", ->
|
||||
beforeEach ->
|
||||
editor.setSoftWrap(true)
|
||||
|
||||
it "does not scroll the buffer", ->
|
||||
editor.width(charWidth * 30)
|
||||
|
||||
# moving right
|
||||
editor.setCursorScreenPosition([2, 24])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
editor.setCursorScreenPosition([2, 25])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
editor.setCursorScreenPosition([2, 28])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
# moving left
|
||||
editor.setCursorScreenPosition([2, 9])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
editor.setCursorScreenPosition([2, 8])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
editor.setCursorScreenPosition([2, 5])
|
||||
expect(editor.scrollLeft()).toBe 0
|
||||
|
||||
describe "when left is pressed on the first column", ->
|
||||
describe "when there is a previous line", ->
|
||||
it "wraps to the end of the previous line", ->
|
||||
|
||||
@@ -128,7 +128,9 @@ class Cursor extends View
|
||||
@editor.scrollTop(desiredTop)
|
||||
|
||||
autoScrollHorizontally: (position) ->
|
||||
charsInView = @editor.lines.width() / @width()
|
||||
return if @editor.softWrap
|
||||
|
||||
charsInView = @editor.width() / @width()
|
||||
maxScrollMargin = Math.floor((charsInView - 1) / 2)
|
||||
scrollMargin = Math.min(@editor.hScrollMargin, maxScrollMargin)
|
||||
margin = scrollMargin * @width()
|
||||
|
||||
@@ -230,10 +230,13 @@ class Editor extends View
|
||||
setSoftWrap: (@softWrap) ->
|
||||
@setMaxLineLength()
|
||||
if @softWrap
|
||||
@addClass 'soft-wrap'
|
||||
@_setMaxLineLength = => @setMaxLineLength()
|
||||
$(window).on 'resize', @_setMaxLineLength
|
||||
else
|
||||
$(window).off 'resize', @_setMaxLineLength
|
||||
@removeClass 'soft-wrap'
|
||||
|
||||
|
||||
clipScreenPosition: (screenPosition, options={}) ->
|
||||
@renderer.clipScreenPosition(screenPosition, options)
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
-webkit-user-select: none;
|
||||
}
|
||||
|
||||
.editor.soft-wrap {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.editor .content {
|
||||
display: -webkit-flexbox;
|
||||
}
|
||||
@@ -24,7 +28,7 @@
|
||||
}
|
||||
|
||||
.editor .gutter.drop-shadow {
|
||||
-webkit-box-shadow: -2px 0px 10px 2px #222;
|
||||
-webkit-box-shadow: -2px 0px 10px 2px #222;
|
||||
}
|
||||
|
||||
.editor .lines {
|
||||
|
||||
Reference in New Issue
Block a user