Commit Graph

31731 Commits

Author SHA1 Message Date
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
Nathan Sobo
c2dcc0121b Add a key to line number divs 2017-05-05 09:29:27 +02:00
Nathan Sobo
c22a81dc57 Remove logging 2017-05-05 09:29:27 +02:00
Nathan Sobo
55ed9e4f62 Pre-assign measuremets.scrollTop when autoscrolling
This avoids work when the scroll event happens asynchronously because
we'll treat the event as a no-op since the measurements didn't change.
2017-05-05 09:29:27 +02:00
Nathan Sobo
192e7c6b63 Handle direct focus of hidden input and avoid redundant focus renders 2017-05-05 09:29:27 +02:00
Nathan Sobo
b8a3e2f163 Don't clear elements owned by other components from line nodes map
We should really be recycling elements when they move between lines, but
that's a bigger project.
2017-05-05 09:29:27 +02:00
Nathan Sobo
19db16664f Don't autoscroll to impossible scrollTop locations 2017-05-05 09:29:27 +02:00
Nathan Sobo
d929720d24 Use null sentinel value for autoscrollTop to avoid bug with negatives 2017-05-05 09:29:27 +02:00
Nathan Sobo
ec045d9333 Gracefully handle focus events that occur before the attachedCallback 2017-05-05 09:29:27 +02:00
Nathan Sobo
ff2f9b192a Implement vertical autoscroll; still need tests 2017-05-05 09:29:27 +02:00
Nathan Sobo
4c51ae77dd Handle text input 2017-05-05 09:29:27 +02:00
Nathan Sobo
c52d66377f Render hidden input and handle focus and blur 2017-05-05 09:29:27 +02:00
Nathan Sobo
9487c1cd00 Move lines class 2017-05-05 09:29:27 +02:00
Nathan Sobo
b362f746f8 Fix spurious selections marker layer update to avoid extra render 2017-05-05 09:29:27 +02:00
Nathan Sobo
be7f4a5ffd Add workaround in test, but we need to make MarkerLayer updates sync 2017-05-05 09:29:27 +02:00
Nathan Sobo
d780b15248 Add cursor rendering tests 2017-05-05 09:29:27 +02:00
Nathan Sobo
c8166c1bb3 Render cursors after measuring horizontal positions 2017-05-05 09:29:27 +02:00
Nathan Sobo
43386b0483 Always update twice assuming we may need to measure
This prepares the ground for measuring absoltue cursor positions.
2017-05-05 09:29:27 +02:00
Nathan Sobo
583c2c537d Iron out scheduling issues
* Ensure multiple calls to scheduleUpdate only result in a single call
to updateSync in the future.
* Explicit calls to update sync after scheduling an update fulfill the
scheduled update.
* Track whether we think the editor is visible or not to avoid redundant
didShow calls.
* Ensure we only update on resize events if the editor actually changed
size.
2017-05-05 09:29:27 +02:00
Nathan Sobo
19d1d148eb Measure the longest visible screen line on initial render 2017-05-05 09:29:27 +02:00
Nathan Sobo
ede5d5e5f4 Add coverage for gutter measurement and horizontal translation on scroll 2017-05-05 09:29:27 +02:00
Nathan Sobo
b863790390 Start on new TextEditorComponent specs; avoid excessive line numbers 2017-05-05 09:29:27 +02:00
Nathan Sobo
9765d9dbcd Translate gutter so it remains visible when scrolling to the right
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2017-05-05 09:29:27 +02:00
Nathan Sobo
d2d560eac6 Render character measurement line via virtual DOM
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2017-05-05 09:29:27 +02:00
Nathan Sobo
b38fafc83a Absolutely position line number tiles
Static positioning doesn’t seem to improve layout performance
2017-05-05 09:29:27 +02:00
Nathan Sobo
aed4d8876f Use contain: strict on line number gutter and its tiles
This improves layout time of scrolling by limiting the extent of gutter re-layouts.

Signed-off-by: Antonio Scandurra <as-cii@github.com>
2017-05-05 09:29:27 +02:00
Nathan Sobo
f94144ff4b WIP 2017-05-05 09:29:27 +02:00
Nathan Sobo
f237d70357 WIP 2017-05-05 09:29:27 +02:00
Nathan Sobo
1f068bde62 Enable experimental web platform features
This will facilitate #13880
2017-05-03 14:21:24 +02:00
Wliu
c638f8693a Update spec reporter relativization
Electron 1.6 changed the reporting from .<anonymous> to
jasmine.Spec.<anonymous>
2017-05-03 14:21:24 +02:00
Nathan Sobo
9bc53948b7 ⬆️ electron to 1.6.5 2017-05-03 14:21:24 +02:00
Antonio Scandurra
d9004769e0 Disable auxclick 2017-05-03 14:21:24 +02:00
Antonio Scandurra
0bd1255b15 Solve CSP issues for all media types 2017-05-03 14:21:24 +02:00
Antonio Scandurra
32db6a46dc Fix CSP for fonts 2017-05-03 14:21:24 +02:00
Wliu
631861a366 ⬆️ electron@1.6.4
For Windows sourcemap support
2017-05-03 14:21:24 +02:00
Nathan Sobo
4548fe8358 Upgrade to Electron 1.6.3 2017-05-03 14:21:24 +02:00
Nathan Sobo
c28685c816 Don't use --eval when forking child process in Task
There seems to be an Electron bug or something where the child process
isn't receiving messages when --eval is used. It isn't necessary anyway
if we we convert task-bootstrap.coffee to vanilla JS.
2017-05-03 14:21:24 +02:00
Nathan Sobo
06774dbff8 Call compiled functions with Buffer for Electron 1.6 compatibility 2017-05-03 14:21:24 +02:00