Commit Graph

21417 Commits

Author SHA1 Message Date
Nathan Sobo
d14d4aaae1 Remove subscriptions in editor view that are handled in presenter 2015-02-04 15:12:21 -07:00
Nathan Sobo
77599c799c Rename TextEditorPresenter::height to ::explicitHeight
This clarifies that the height is being assigned externally rather than
derived from the content.
2015-02-04 15:10:58 -07:00
Nathan Sobo
b94576dc09 Pass view measurements to model via presenter
Someday, we won’t need to pass measurements to the model anymore.
2015-02-04 14:48:17 -07:00
Nathan Sobo
9bdb961b3f Update vertical scroll state when contentFrameWidth changes
A wider content frame can mean the horizontal scrollbar gets hidden,
which could in turn mean we need to adjust the scrollTop because the
clientHeight changed.
2015-02-04 11:51:46 -07:00
Nathan Sobo
59d96c9f1a Measure scrollbars immediately when editor becomes visible
This ensures all required measurements are present so assignment of
subsequent measurements such as backgroundColor have an effect.
2015-02-04 11:48:47 -07:00
Nathan Sobo
6196882b9d Include scrollbar dimensions in required measurements in presenter 2015-02-04 11:35:07 -07:00
Nathan Sobo
3973939de1 Don’t constrain scrollTop/Left until required measurements are assigned
This commit also adds to the list of required measurements and updates
the spec with a buildPresenter helper to more easily supply default
values for required measurements in each spec when they aren’t relevant
to that spec’s content.
2015-02-04 11:13:24 -07:00
Nathan Sobo
b792190693 Constrain scrollLeft based on computed clientWith and scrollWidth 2015-02-04 10:22:29 -07:00
Nathan Sobo
1ae25ed85d Make randomized presenter spec failures easier to reproduce 2015-02-04 10:05:47 -07:00
Nathan Sobo
5bb3095ffa Constrain scrollTop based on clientHeight and scrollHeight 2015-02-04 09:38:00 -07:00
Nathan Sobo
3656d4cca6 Pass options in DisplayBuffer::screenRangeForBufferRange 2015-02-04 08:42:34 -07:00
Nathan Sobo
3e6669cf3e Log code for repeatable randomized presenter spec failures 2015-02-04 08:42:06 -07:00
Nathan Sobo
6977660699 Store ‘isOnlyWhitespace’ in line presenter state 2015-02-04 07:59:34 -07:00
Nathan Sobo
ba6d11e24e Merge branch 'master' into ns-editor-presenters 2015-02-04 07:57:04 -07:00
Nathan Sobo
86991bbec2 Merge branch 'driskell-bugs/ident_guide_whitespace_only' 2015-02-03 21:26:25 -07:00
Nathan Sobo
973d7ebf13 Add spec coverage for indent guides + invisibles on blank lines 2015-02-03 21:26:01 -07:00
Nathan Sobo
a685f3dc37 Prevent updates for off-screen line decoration markers on change
When there were lots of off-screen markers, we were performing lots of
redundant updates when off-screen markers changed. Now we only perform
updates if they intersect the visible row range.

@maxbrunsfeld this should improve the situation for folding/unfolding
when there are lots of others folds. Let me know.
2015-02-03 21:02:33 -07:00
Nathan Sobo
20a95269c9 Preserve line number for mouseWheelScreenRow in a sane way
What we were doing before made no sense.

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-02-03 20:41:59 -07:00
Kevin Sawicki
c7315e2be6 Merge pull request #5342 from paulcbetts/deltas
Delta Packages for Windows + Update Squirrel.Windows
2015-02-03 17:14:36 -08:00
Kevin Sawicki
a4976c32ae Remove release notes from event payload
The release notes are provided by Squirrel on Mac but not by Squirrel for
Windows and the release notes package pulls them down manually anyway
so this field is no longer needed.

Checking for the presence of the release notes previously was preventing the
event from firing on Windows which would cause old release notes to show in
the package.

Closes #3757
2015-02-03 14:57:33 -08:00
Nathan Sobo
78b8039384 Don’t require sync update before measuring when autoHeight changes
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-02-03 15:05:45 -07:00
Nathan Sobo
cd77870286 In presenter, handle the first line being soft-wrapped
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-02-03 15:05:44 -07:00
Nathan Sobo
75652e36d9 Remove ? guard from ::oldState and ::newState references 2015-02-03 15:05:44 -07:00
Nathan Sobo
9991cd73c7 Reference scrollingVertically in the proper location in presenter state 2015-02-03 15:05:44 -07:00
Nathan Sobo
ac215e11b4 Fix velocity scrolling upward
There’s no need to check that the mouseWheelScreenRow is on screen
before preserving the corresponding line.
2015-02-03 15:05:44 -07:00
Nathan Sobo
20ce35c017 Emit update events in TextEditorPresenter when highlights are removed 2015-02-03 15:05:44 -07:00
Nathan Sobo
edd595a72f Access mouseWheelScreenRow property instead of calling removed method 2015-02-03 15:05:43 -07:00
Nathan Sobo
0a6116a785 Fix undefined method errors in overlay manager
Access properties directly now
2015-02-03 15:05:43 -07:00
Nathan Sobo
2dc29a60ef Avoid full decorations query when decorations are added 2015-02-03 15:05:43 -07:00
Nathan Sobo
b78522d8e6 Avoid full decoration query when line decorations’ markers change 2015-02-03 15:05:43 -07:00
Nathan Sobo
c6f23c2edb Dispose of decoration subscriptions when it’s destroyed 2015-02-03 15:05:43 -07:00
Nathan Sobo
342903567e Avoid full decoration query when line decorations are destroyed 2015-02-03 15:05:43 -07:00
Nathan Sobo
648c58d41e Hide line decorations for invalid markers again 2015-02-03 15:05:42 -07:00
Nathan Sobo
7deb411e84 Fix randomized spec failures 2015-02-03 15:05:42 -07:00
Nathan Sobo
cf50ec1861 Fix action logging in random spec 2015-02-03 15:05:42 -07:00
Nathan Sobo
4a74d4adba Avoid decoration queries when updating individual highlight decorations 2015-02-03 15:05:42 -07:00
Nathan Sobo
f337553a70 Handle highlight state updates in ::updateDecorations 2015-02-03 15:05:42 -07:00
Nathan Sobo
0e85efdd28 🐎 Cache line/line-number decorations to avoid per-line queries 2015-02-03 15:05:34 -07:00
Nathan Sobo
3884a30f39 Unify decoration observation 2015-02-03 15:05:33 -07:00
Nathan Sobo
f99b85a299 Use properties directly instead of getters
This will emphasize a design where everything is updated when the model
and view measurements change rather than recomputed as needed.
2015-02-03 15:05:33 -07:00
Nathan Sobo
de5c1fc28d Add randomized fuzz test for TextEditorPresenter
This test performs random operations on the editor and assigns random
measurements from the view. After each operation, the state of a
pre-existing presenter is compared with that of a new presenter created
with the same parameters.

Since it’s easier to reason about building fresh state than it is to
reason about state updates, I hope this will catch any bugs in our
update logic as we optimize it and explore every corner case.
2015-02-03 15:05:33 -07:00
Nathan Sobo
89344c6cfd Update scrollbars state when editor content changes 2015-02-03 15:05:33 -07:00
Nathan Sobo
74e4756ef0 🐎 Don’t update presenter state unless measurements change 2015-02-03 15:05:33 -07:00
Nathan Sobo
510520d2c7 🎨 rename ::getStart/EndRow to ::computeStart/EndRow 2015-02-03 15:05:32 -07:00
Nathan Sobo
4eb39b1be2 Remove unnecessary onDidChangeSoftWrapped subscription 2015-02-03 15:05:32 -07:00
Nathan Sobo
9d507ea692 Break out state updates explicitly when editor content changes 2015-02-03 15:05:32 -07:00
Nathan Sobo
f005b2005f Add specs for updating scrollWidth when the longest line changes 2015-02-03 15:05:32 -07:00
Nathan Sobo
b521e8dc97 Handle auto-height in TextEditorPresenter 2015-02-03 15:05:32 -07:00
Nathan Sobo
bbc1a264b5 Make each section of presenter state self-contained
This means we have some duplicated values in different parts of the
tree, but it’s cleaner in the view since each component only consumes
a single object. Seems like the presenter should convey the correct
data to the correct locations and minimize the logic in the view. A
few duplicated integers is a reasonable trade-off.
2015-02-03 15:05:31 -07:00
Nathan Sobo
da4b3a47ef Don’t observe decorations in text editor view 2015-02-03 15:05:31 -07:00