Commit Graph

31768 Commits

Author SHA1 Message Date
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