Nathan Sobo
6e9a9ef43c
Add spec structure
2017-05-05 09:29:27 +02:00
Nathan Sobo
ffc2025df5
Handle clicking, shift-clicking, cmd-clicking and dragging in gutter
2017-05-05 09:29:27 +02:00
Nathan Sobo
17d579f949
Only handle the left mouse button (and middle on Linux)
2017-05-05 09:29:27 +02:00
Nathan Sobo
35ae3fb08f
Implement autoscroll when mouse is dragged on content
2017-05-05 09:29:27 +02:00
Nathan Sobo
5594c9d82f
Expand selections on mouse drag
2017-05-05 09:29:27 +02:00
Nathan Sobo
6bfe08e9b0
Remove cyclic requires
2017-05-05 09:29:27 +02:00
Nathan Sobo
4ef9d385f3
Add tests for shift-clicking in wordwise and linewise mode
2017-05-05 09:29:27 +02:00
Nathan Sobo
e92cf0fe70
Fix event handler method name in specs
2017-05-05 09:29:27 +02:00
Nathan Sobo
3f4cd5e438
Correctly render cursors on reversed selections
2017-05-05 09:29:27 +02:00
Nathan Sobo
8f385377cf
Make cursors render above lines
2017-05-05 09:29:27 +02:00
Nathan Sobo
4ef2119ef8
Inherit background color so line tiles get a solid background
2017-05-05 09:29:27 +02:00
Nathan Sobo
c410309827
Expand selections on shift-click
2017-05-05 09:29:27 +02:00
Nathan Sobo
35753c3a8d
Add specs for single-, triple-, and cmd-clicking
2017-05-05 09:29:27 +02:00
Nathan Sobo
2996500d90
Handle double and triple click on lines
2017-05-05 09:29:27 +02:00
Nathan Sobo
fab5a93254
Set cursor position on single click
2017-05-05 09:29:27 +02:00
Nathan Sobo
88f3a5b468
WIP: Port screenPositionForPixelPosition from old LinesYardstick
...
Still need to port tests. This will support various mouse interactions.
2017-05-05 09:29:27 +02:00
Nathan Sobo
d7e76d9302
Remove unused event parameters
2017-05-05 09:29:27 +02:00
Nathan Sobo
ec9115e749
Skip un-accented character when undoing after using press-and-hold menu
2017-05-05 09:29:27 +02:00
Nathan Sobo
00933c7c63
Handle IME input
2017-05-05 09:29:27 +02:00
Nathan Sobo
9a38e8c0d1
Support scrollPastEnd option
2017-05-05 09:29:27 +02:00
Nathan Sobo
0a9ecd5369
⬆️ etch
2017-05-05 09:29:27 +02:00
Nathan Sobo
c80dbbce3c
Add tests for highlight rendering
2017-05-05 09:29:27 +02:00
Nathan Sobo
003f6ff231
Add test for off-screen cursors of selections intersecting rendered rows
...
We should not attempt to render these cursors even though part of their
associated selection is visible.
2017-05-05 09:29:27 +02:00
Nathan Sobo
3101e28459
Constrain line/line number decoration update to rendered rows
2017-05-05 09:29:27 +02:00
Nathan Sobo
eacf0d8f64
Decorate cursors via private 'cursor' decoration type
...
This eliminates the need to query the selections marker layer more than
once per frame, since it is already queried for highlights and line
decorations associated with the selections.
2017-05-05 09:29:27 +02:00
Nathan Sobo
a4224922a3
WIP: Add highlight decorations, but no tests yet
2017-05-05 09:29:27 +02:00
Nathan Sobo
aade501040
Refactor to unify computations related to tiles
2017-05-05 09:29:27 +02:00
Nathan Sobo
09f8a52b9d
Implement special options for line and line number decorations
...
* onlyEmpty
* onlyNonEmpty
* onlyHead
* omitEmptyLastLine
2017-05-05 09:29:27 +02:00
Nathan Sobo
ff325c0151
Render line and line number decorations
2017-05-05 09:29:27 +02:00
Nathan Sobo
e15e7e3c96
Assign width and character dimensions on editor to update soft wraps
2017-05-05 09:29:27 +02:00
Nathan Sobo
dbbf23d3a5
Store decorations in sets instead of arrays
2017-05-05 09:29:27 +02:00
Nathan Sobo
fbf21e09d6
Remove decorationsForId from DecorationManager
2017-05-05 09:29:27 +02:00
Nathan Sobo
69d5b63e9d
Replace layerUpdateDisposablesByLayerId with a weak map keyed by layer
2017-05-05 09:29:27 +02:00
Nathan Sobo
a1faf66a85
Replace decorationCountsByLayerId with a map keyed by layer
2017-05-05 09:29:27 +02:00
Nathan Sobo
18acf8bb19
Replace decorationsByMarkerLayerId with map keyed by layer
2017-05-05 09:29:27 +02:00
Nathan Sobo
acf057e002
Replace overlayDecorationsById with overlayDecorations set
2017-05-05 09:29:27 +02:00
Nathan Sobo
f426471910
Replace decorationsByMarkerId with map keyed by decoration
2017-05-05 09:29:27 +02:00
Nathan Sobo
f8a0058f06
Convert DecorationManager to standard style and remove unused method
2017-05-05 09:29:27 +02:00
Nathan Sobo
b713210b0c
Emit didUpdateDecorations events synchronously
...
The rendering layer can be asynchronous instead, plus layer decorations
should remove the need to emit lots of individual events.
2017-05-05 09:29:27 +02:00
Nathan Sobo
30cd83f7aa
Convert DecorationManager to JS
2017-05-05 09:29:27 +02:00
Nathan Sobo
94294d1b92
Test autoscrolling via scrollToScreenPosition instead of cursor
2017-05-05 09:29:27 +02:00
Nathan Sobo
b9feddacbe
Fail focus tests quickly and clearly if document isn't focused
2017-05-05 09:29:27 +02:00
Nathan Sobo
3e87f9f889
Add horizontal autoscroll
2017-05-05 09:29:27 +02:00
Nathan Sobo
2ef29dee88
Refactor TextEditorComponent.prototype.updateSync
2017-05-05 09:29:27 +02:00
Nathan Sobo
51755a0f25
Don't render more line numbers than exist
2017-05-05 09:29:27 +02:00
Nathan Sobo
ed537fd61a
Drop suppressLayerUpdateEvent flag
...
We now emit marker layer update events synchronously at the end of
transactions, so this isn't needed or supported by text-buffer.
2017-05-05 09:29:27 +02:00
Nathan Sobo
375b4a00ec
⬆️ etch and text-buffer to support new rendering code
2017-05-05 09:29:27 +02:00
Nathan Sobo
7196b05af7
Cache line number gutter properties during a single frame
...
These properties are somewhat expensive to compute. Since we need to
perform 2 updates per frame to perform horizontal measurement, it's good
to avoid computing the gutter properties twice since they aren't
affected by horizontal measurements in any way.
2017-05-05 09:29:27 +02:00
Nathan Sobo
38f51ce74d
Extract LinesTileComponent to minimize diff/patch overhead
...
When typing on a single line, only a single tile needs to be updated.
When moving the cursor no tiles need to be updated.
2017-05-05 09:29:27 +02:00
Nathan Sobo
eae8e15155
Extract LineNumberGutterComponent to reduce patching
2017-05-05 09:29:27 +02:00