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
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
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
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
Nathan Sobo
0e27bebbb3
Fix indentation
2015-02-03 15:05:31 -07:00
Nathan Sobo
efdba9fc24
Use presenter state for scrollbars and scrollbar corner
2015-02-03 15:05:31 -07:00
Nathan Sobo
0910e86357
Add .right and .bottom to presenter scrollbar states
2015-02-03 15:05:31 -07:00
Nathan Sobo
14776e3f0a
Give each scrollbar its own state object and track visibility
2015-02-03 15:05:30 -07:00
Nathan Sobo
42ab02d7d2
Rename ::clientHeight/Width to ::height and ::contentFrameWidth
...
The term “client” was actually a misnomer here because it typically
means the height excluding the scrollbars, which wasn’t how we were
using it here.
2015-02-03 15:05:30 -07:00
Nathan Sobo
1b5be9aef8
Track horizontal/vertical scrollbar height/width in presenter
2015-02-03 15:05:30 -07:00
Nathan Sobo
9de8ab949f
Drop TextEditorComponent::getRenderedRowRange
2015-02-03 15:05:30 -07:00
Nathan Sobo
d8cafb1fc6
Don’t observe screen line changes in editor component
2015-02-03 15:05:29 -07:00
Nathan Sobo
76241fb779
Handle line and line number preservation in presenter
...
The target of mousewheel events needs to be preserved when scrolling.
It used to be dealt with in the view, but now we can do it in the
presenter for a simpler view implementation.
2015-02-03 15:05:29 -07:00
Nathan Sobo
d9a5d141eb
Clear ::mouseWheelScreenRow after delay even if we don’t actually scroll
2015-02-03 15:05:29 -07:00
Nathan Sobo
37a040a620
Preserve line numbers in presenter based on ::mouseWheelScreenRow
2015-02-03 15:05:29 -07:00
Nathan Sobo
35d3690088
Preserve lines in TextEditorPresenter based on ::mouseWheelScreenRow
2015-02-03 15:05:29 -07:00
Nathan Sobo
578a76ba6b
Make “mouse wheel” 2 words in presenter API
...
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com >
2015-02-03 15:05:28 -07:00
Nathan Sobo
da5ee3fa86
Add TextEditorPresenter::state.mousewheelScreenRow
2015-02-03 15:05:28 -07:00
Nathan Sobo
a88486e950
Use maxLineNumberDigits from presenter state in GutterComponent
2015-02-03 15:05:28 -07:00
Nathan Sobo
1a22952eda
Only store backgroundColor and gutterBackgroundColor on presenter
2015-02-03 15:05:28 -07:00
Nathan Sobo
fd50a0db6c
Construct TextEditorPresenter before component mounts
...
This allows us to use the presenter for all stages of the component
lifecycle rather than needing to wait until it is created.
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com >
2015-02-03 15:05:28 -07:00
Nathan Sobo
ac25596002
Wait for required measurements before building some presenter state
...
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com >
2015-02-03 15:05:27 -07:00
Max Brunsfeld
9cc7ecb1be
Add maxLineNumberDigits to presenter state
2015-02-03 15:05:27 -07:00
Max Brunsfeld
60fca8d8b2
Use presenter state for gutter background color
...
Signed-off-by: Nathan Sobo <nathan@github.com >
2015-02-03 15:05:27 -07:00
Max Brunsfeld
fd4f28911d
Use presenter state for placeholder text
...
Signed-off-by: Nathan Sobo <nathan@github.com >
2015-02-03 15:05:27 -07:00
Nathan Sobo
1a61133def
Remove unused local var
...
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com >
2015-02-03 15:05:26 -07:00
Nathan Sobo
f5fa3b837e
Set content.indentGuidesVisible in presenter if editor is mini
2015-02-03 15:05:26 -07:00
Nathan Sobo
b21b9c3402
Use presenter’s scrollingVertically property to defer line measurement
2015-02-03 15:05:26 -07:00
Nathan Sobo
d4517b1ab0
Add TextEditorPresenter::state.scrollingVertically
...
This is used by the view to defer measuring new lines until we stop
scrolling.
2015-02-03 15:05:26 -07:00
Nathan Sobo
837b9eefbb
Use backgroundColor from presenter in LinesComponent
2015-02-03 15:05:26 -07:00
Nathan Sobo
71a27de7ac
Add TextEditorPresenter::state.content.backgroundColor
2015-02-03 15:05:25 -07:00
Nathan Sobo
96ba4cc6bd
Remove unused React props and methods that build them
2015-02-03 15:05:25 -07:00
Nathan Sobo
9d7285d04a
Use presenter for rendering overlay decorations
...
We’re still doing some sync DOM reads and computation in the view that
should eventually be made async and moved into the presenter, but I’m
going to leave it alone for now.
2015-02-03 15:05:25 -07:00
Nathan Sobo
e4c95d8ac3
Add overlay decorations to TextEditorPresenter::state
2015-02-03 15:05:25 -07:00
Nathan Sobo
a5580a704d
Remove unused properties in EditorComponent and children
2015-02-03 15:05:25 -07:00
Nathan Sobo
c4b5a0f411
Honor the ‘onlyHead’ option for line and line-number decorations
2015-02-03 15:05:24 -07:00
Nathan Sobo
0802b9bdd1
Don’t decorate soft-wrapped lines/line numbers unless spanned by marker
2015-02-03 15:05:24 -07:00
Nathan Sobo
b1fe567ce8
Build line numbers based on presenter state
2015-02-03 15:05:24 -07:00