Nathan Sobo
4da579ceff
Unfocus test
2017-05-05 09:29:28 +02:00
Nathan Sobo
2faec0b142
Avoid using += with let variables to avoid let compound assigment deopt
...
See https://jsperf.com/let-compound-assignment
2017-05-05 09:29:28 +02:00
Nathan Sobo
162020443b
Cache subtrees to avoid duplicating work within a single frame
2017-05-05 09:29:28 +02:00
Nathan Sobo
2880534ba6
Store line, line number decorations in arrays and avoid slicing
2017-05-05 09:29:28 +02:00
Nathan Sobo
61583462cf
Set the height of the line number gutter explicitly
2017-05-05 09:29:28 +02:00
Nathan Sobo
4e834da3e3
WIP: Render gutters before initial measurement
...
The shouldUpdate method is just returning true for now. We probably need
to find a new approach to representing line number decorations that's
easier to diff, perhaps a sparse array?
2017-05-05 09:29:28 +02:00
Nathan Sobo
d5d3cfc5a9
Adjust left position of scroll container when gutter container resizes
2017-05-05 09:29:28 +02:00
Nathan Sobo
1b1cffb32d
⬆️ etch to allow arbitrary objects as keys
2017-05-05 09:29:28 +02:00
Nathan Sobo
d8b22fb3bd
Associate gutters with their elements and support showing/hiding gutters
2017-05-05 09:29:28 +02:00
Nathan Sobo
16694a2166
Start on custom gutters
2017-05-05 09:29:28 +02:00
Nathan Sobo
6fefef0509
Only update scrollTop/Left when they change
...
This avoids forcing a reflows in some circumnstances.
2017-05-05 09:29:28 +02:00
Nathan Sobo
fadde63ec4
Integrate properly with Atom scheduler
2017-05-05 09:29:28 +02:00
Nathan Sobo
90452836fe
Fix wrong variable name
2017-05-05 09:29:28 +02:00
Nathan Sobo
251078da10
Factor editor component update into high-level phases
2017-05-05 09:29:28 +02:00
Nathan Sobo
555273f997
Refactor
2017-05-05 09:29:28 +02:00
Nathan Sobo
4707803416
Use the atom.views scheduler in TextEditorComponent
...
This ensures smooth scheduling interactions with autocomplete-plus
overlays so they measure their dimensions at the right time.
2017-05-05 09:29:28 +02:00
Nathan Sobo
1676617218
Add static TextEditor.viewForOverlayItem method to avoid using global
2017-05-05 09:29:28 +02:00
Nathan Sobo
5297e7ab1a
Add avoidOverflow: false option for overlays
2017-05-05 09:29:28 +02:00
Nathan Sobo
f2e2475c62
Use spies instead of monkey patching
2017-05-05 09:29:28 +02:00
Nathan Sobo
47761a455e
Support class property on overlay decorations
2017-05-05 09:29:28 +02:00
Nathan Sobo
b6f71bc648
Render overlay decorations
2017-05-05 09:29:28 +02:00
Nathan Sobo
c7dc567e62
Only update scrollTop/Left of dummy scrollbar after inner div is updated
2017-05-05 09:29:28 +02:00
Nathan Sobo
5f2d4c801b
Handle mousedowns on dummy scrollbars that miss the actual scrollbars
...
Because the dummy scrollbar elements are potentially wider than the real
scrollbars rendered by the browser, we need to delegate some mousedown
events to the parent component.
2017-05-05 09:29:28 +02:00
Nathan Sobo
e6e5420f42
Correctly handle overflows caused by scrollbar for the opposite axis
2017-05-05 09:29:28 +02:00
Nathan Sobo
0999d0bf02
Handle scrolling of the dummy scrollbars directly
2017-05-05 09:29:28 +02:00
Nathan Sobo
8720dbc862
🎨
2017-05-05 09:29:28 +02:00
Nathan Sobo
5757d6de85
Group rendering tests
2017-05-05 09:29:28 +02:00
Nathan Sobo
2075f06404
WIP: Introduce dummy scrollbars
...
Still need tests on all of this
2017-05-05 09:29:28 +02:00
Nathan Sobo
5a47f179e3
Introduce synthetic scrolling
...
We previously thought scroll events had changed somehow to become
synchronous, but were wrong. This introduces synthetic scrolling where
we use GPU translation of the contents of the gutter and scroll
containers to simulate scrolling and explicitly capture mousewheel
events.
Still need to add dummy scrollbars and deal with their footprint in
clientHeight and clientWidth.
2017-05-05 09:29:28 +02:00
Nathan Sobo
0e747a400d
Pull from component's rendered lines in tests
2017-05-05 09:29:28 +02:00
Nathan Sobo
e6026a145c
Fix auto-width
2017-05-05 09:29:28 +02:00
Nathan Sobo
f58a249be1
Pull from compnoent's rendered screen lines in tests
2017-05-05 09:29:28 +02:00
Nathan Sobo
2cde4aea76
Remove TextEditorComponent.getModel
2017-05-05 09:29:28 +02:00
Nathan Sobo
927648d318
Use marker id as highlight key
...
This keeps highlight elements in stable positions on the DOM, which
ensures that CSS transitions don't appear in the wrong spot.
2017-05-05 09:29:28 +02:00
Nathan Sobo
90c326b985
Fix clearing of marker-specific properties for layer decorations
2017-05-05 09:29:28 +02:00
Nathan Sobo
bef043a8ad
Refactor highlight flashing
2017-05-05 09:29:28 +02:00
Nathan Sobo
6023159819
Add highlight decoration flashing
2017-05-05 09:29:28 +02:00
Nathan Sobo
4e00139965
Support placeholderText parameter
2017-05-05 09:29:28 +02:00
Nathan Sobo
36f5262f40
Honor the isLineNumberGutterVisible option
2017-05-05 09:29:28 +02:00
Nathan Sobo
88b30bc4dc
Support autoHeight and autoWidth settings
2017-05-05 09:29:28 +02:00
Nathan Sobo
369818b475
Emit editor blur events as if no hidden input existed
2017-05-05 09:29:28 +02:00
Nathan Sobo
b152bfd9c6
Guard against unfocused window in beforeEach
2017-05-05 09:29:28 +02:00
Nathan Sobo
401434858b
Gracefully handle focus prior to detecting the editor has become visible
2017-05-05 09:29:28 +02:00
Nathan Sobo
82feef9f68
Don't render cursor line decorations in mini editors
2017-05-05 09:29:28 +02:00
Nathan Sobo
1427dbf540
Make lines extend across the entire width of the scroller
...
This ensures line decorations render properly, even when the content is
narrower than the editor.
2017-05-05 09:29:28 +02:00
Nathan Sobo
5c7208751f
Correctly autoscroll if a horizontal scrollbar appears in the same frame
2017-05-05 09:29:28 +02:00
Nathan Sobo
5d82dcf87a
Wait for content width to update before autoscrolling horizontally
2017-05-05 09:29:28 +02:00
Nathan Sobo
758466c9af
Make various tweaks to improve mini editors
...
Still a ways to go, but this is a start toward getting the mini-editors
to play nice with our existing styling.
2017-05-05 09:29:28 +02:00
Nathan Sobo
f00941f299
Only create EditorComponent once per editor
2017-05-05 09:29:28 +02:00
Nathan Sobo
ebad2e6605
Implement detachment to eliminate spurious drag events
2017-05-05 09:29:28 +02:00