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
Nathan Sobo
cb982d6513
Upgrade to Electron 1.6.2
2017-05-03 14:21:24 +02:00
Nathan Sobo
b6e3806e77
Instantiate elementResizeDetector instances lazily
...
This avoids references to browser globals during snapshot creation.
2017-05-03 14:21:24 +02:00
Nathan Sobo
a723614750
Fix lint error
2017-05-03 14:21:24 +02:00
Nathan Sobo
1c796ed773
⬆️ donna in script dependencies
2017-05-03 14:21:24 +02:00
Nathan Sobo
a0c84d592a
Remove ViewRegistry.pollDocument
...
Supporting it via mutation observers has a bad impact on frame rate.
2017-05-03 14:21:24 +02:00
Nathan Sobo
bbbb629f70
Eliminate polling of overlay decoration dimensions
...
And remove pollDOM method entirely.
Signed-off-by: Max Brunsfeld <maxbrunsfeld@github.com >
2017-05-03 14:21:24 +02:00
Nathan Sobo
549bce5637
Replace sampleBackgroundColors with background-color: inherit in CSS
...
Previously, the shadow boundary made this impossible, but the new CSS is
way simpler than the JS we’re replacing and removes another dependency
on DOM polling.
2017-05-03 14:21:24 +02:00
Nathan Sobo
8bb3ec1563
Synchronously sample font styling when global editor stylesheet changes
...
And don’t sample font styling in pollDOM, which we are aiming to
eliminate.
Signed-off-by: Max Brunsfeld <maxbrunsfeld@github.com >
2017-05-03 14:21:24 +02:00
Nathan Sobo
0560ce7f18
Use window resize events to trigger measureWindowSize
...
Signed-off-by: Max Brunsfeld <maxbrunsfeld@github.com >
2017-05-03 14:21:24 +02:00
Nathan Sobo
0d8101b6c3
Synchronously call becameVisible if editor is visible when attached
...
Signed-off-by: Max Brunsfeld <maxbrunsfeld@github.com >
2017-05-03 14:21:24 +02:00