Commit Graph

7728 Commits

Author SHA1 Message Date
Antonio Scandurra
8707cabe40 Don't count the dummy line in block decoration test 2017-05-05 09:29:29 +02:00
Nathan Sobo
99e3c62e69 Clear highlight nodes when recycling line tiles 2017-05-05 09:29:28 +02:00
Nathan Sobo
3fce3ebe17 Fix test 2017-05-05 09:29:28 +02:00
Nathan Sobo
6e6dce21ee Don't re-measure if editor has become invisible 2017-05-05 09:29:28 +02:00
Nathan Sobo
7aec696bb5 Remove stray logging 2017-05-05 09:29:28 +02:00
Nathan Sobo
95c8950004 Re-measure and update rendered content when editor styles change 2017-05-05 09:29:28 +02:00
Antonio Scandurra
054c133ed4 Remeasure block decorations when editor width changes
Signed-off-by: Nathan Sobo <nathan@github.com>
2017-05-05 09:29:28 +02:00
Antonio Scandurra
8103bd687c Update line number gutter when invalidating a visible block decoration
When two or more decorations in the same tile were invalidated but the
sum of their height didn't change, we were previously failing to
recognize that the line numbers gutter needed to be re-rendered. With
this commit, whenever a block decoration is visible and gets
invalidated, we will force the line number gutter to always update.
2017-05-05 09:29:28 +02:00
Nathan Sobo
8aae3ab1ae Hide cursors with non-empty selection if showCursorsOnSelection is false
Also, remove some barely used public APIs around cursor visibility that
don't make much sense and are not ideal for performance. We don't want
to subscribe to the visibility of each cursor.
2017-05-05 09:29:28 +02:00
Antonio Scandurra
bc8b548d1a Add TextEditorElement.prototype.invalidateBlockDecorationDimensions 2017-05-05 09:29:28 +02:00
Antonio Scandurra
b264d4764a Align line number nodes with line nodes 2017-05-05 09:29:28 +02:00
Antonio Scandurra
7474b4b678 Integrate block decorations in the custom lines rendering routine 2017-05-05 09:29:28 +02:00
Antonio Scandurra
316df28bbd Splice LineTopIndex when a textual change occurs 2017-05-05 09:29:28 +02:00
Antonio Scandurra
4cd9a36594 Handle inserting and updating block decorations 2017-05-05 09:29:28 +02:00
Antonio Scandurra
015f196f2f Test scrolling down with block decorations 2017-05-05 09:29:28 +02:00
Antonio Scandurra
e289283205 Render block decorations between lines 2017-05-05 09:29:28 +02:00
Nathan Sobo
5a6935a01c Use LineTopIndex to convert from/to rows to/from pixel positions 2017-05-05 09:29:28 +02:00
Nathan Sobo
b32b760ee4 WIP: Start on block decorations 2017-05-05 09:29:28 +02:00
Nathan Sobo
eb588d4c7c Test and fix the center option to autoscroll 2017-05-05 09:29:28 +02:00
Nathan Sobo
acf996fc14 Speed up cursor blink test 2017-05-05 09:29:28 +02:00
Nathan Sobo
eb22b58756 Add smoke test for cursor blink 2017-05-05 09:29:28 +02:00
Nathan Sobo
4da579ceff Unfocus test 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
90452836fe Fix wrong variable name 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
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
f58a249be1 Pull from compnoent's rendered screen lines in tests 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
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