Commit Graph

149 Commits

Author SHA1 Message Date
Ben Ogle
084632a985 Rename Selection(s)Component to Highlight(s)Component 2014-06-16 15:36:08 -07:00
Ben Ogle
002e14990b Rename bufferRowHasClass 2014-06-16 15:36:08 -07:00
Ben Ogle
3a3fc4b614 Add a spec for screen line changes 2014-06-16 15:36:08 -07:00
Ben Ogle
e128212410 Fix decoration specs to work with markers only 2014-06-16 15:36:08 -07:00
Ben Ogle
87915f70e2 editor.scrollSensitivity option 2014-06-11 12:07:49 -07:00
Nathan Sobo
030bcd6d4f Make react cursor the width of a default character at the end of lines
When the cursor is positioned before a character, we always make it the
width of that character. But at the end of a line, there is no character
to use to set the width, so we just use the defaultCharWidth.

This makes the block cursor visible on empty lines in vim-mode.
2014-06-11 11:54:10 -06:00
Nathan Sobo
7c1a4a9e08 Don't clip range start/end in DisplayBuffer::pixelRectForScreenRange
Fixes #2583

This prevents the cursor from having 0 width inside atomic tokens.
2014-06-11 11:40:57 -06:00
Corey Johnson
94dd1eed54 Merge remote-tracking branch 'origin/master' into cj-add-react-editor-shims
Conflicts:
	src/editor-component.coffee
2014-06-11 08:56:27 -07:00
Nathan Sobo
1b026cc805 Set is-focused class on React editor's wrapper view for now 2014-06-11 08:37:16 -06:00
Nathan Sobo
b73d267a5f Merge branch 'master' into cj-add-react-editor-shims 2014-06-11 07:34:41 -06:00
Nathan Sobo
7040906473 Ignore null bytes when measuring character widths in React editor
Fixes #2391
2014-06-11 07:18:52 -06:00
Nathan Sobo
64870c733b Add API for enabling/disabling input to support vim-mode's insert mode 2014-06-11 06:07:41 -06:00
probablycorey
9e7e77bdf8 Merge remote-tracking branch 'origin/master' into cj-add-react-editor-shims
Conflicts:
	src/gutter-component.coffee
2014-06-10 15:42:23 -07:00
Ben Ogle
756347a716 Add has-selection class to the editor div when there is a selection 2014-06-09 15:45:32 -07:00
Ben Ogle
dc6836dc2d Add specs for cursor-line decorations 2014-06-09 15:18:12 -07:00
Ben Ogle
e59f242f19 Move click gutter into the GutterComponent 2014-06-09 14:11:41 -07:00
Ben Ogle
bae625a894 Add spec for when lines become foldable 2014-06-09 14:04:24 -07:00
Ben Ogle
b5532ee4a3 💄 spec
Use the event system to click on the gutter
2014-06-09 14:04:24 -07:00
Ben Ogle
a8df77243c Fix spec
I changed the width of the gutter in b0af7cfc12729e9ef1320c0b178cc024bc0e60cc
16 characters is still within the break range of the word 'wraps'
2014-06-09 14:04:23 -07:00
Ben Ogle
8e1e5a3760 Add ability to click the fold icons 2014-06-09 14:04:23 -07:00
Ben Ogle
5cd8f5952f Make editor push decorator updates to the gutter 2014-06-09 14:04:23 -07:00
Ben Ogle
235180cf03 Add specs for fold rendering 2014-06-09 14:04:23 -07:00
Ben Ogle
a13990155f Use setImmediate rather than setTimeout 2014-06-09 14:04:23 -07:00
Ben Ogle
5bae58eeb1 Clean up specs based on feedback. 2014-06-09 14:04:22 -07:00
Ben Ogle
6ce859774a Name changes 2014-06-09 14:04:22 -07:00
Ben Ogle
fa4a6e2d71 Nof 2014-06-09 14:04:22 -07:00
Ben Ogle
79578e08ab Specs for marker decorations 2014-06-09 14:04:22 -07:00
Ben Ogle
d51894103d Debounce the rendering of decorations 2014-06-09 14:04:22 -07:00
Ben Ogle
eb59196c02 Rendering decorations works well.
Also specs.
2014-06-09 14:04:22 -07:00
Corey Johnson
4d6737230a Remove unused mousewheel event spec 2014-06-09 13:55:19 -07:00
Nathan Sobo
3134bfda95 Update selections when the font size or font family change 2014-06-03 17:43:57 +09:00
Nathan Sobo
1c177aa206 Add spec for cursor position updates when the font family changes 2014-06-03 17:43:57 +09:00
Nathan Sobo
ec65def5d3 Add spec for cursor position updates when the font size changes 2014-06-03 17:43:57 +09:00
Nathan Sobo
3aefa53b33 Batch together line and character width measurement after font changes
This ensures we only perform a single update with the most up-to-date
information about line height, default character width, and specific
character widths. If this update causes more lines to be drawn we may
measure again, but not necessarily.
2014-06-03 17:43:56 +09:00
Nathan Sobo
1cc5ef3479 Update selections when the line height changes 2014-06-03 17:43:56 +09:00
Nathan Sobo
3052fe3f3b Update cursors when the line height in pixels changes 2014-06-03 17:43:56 +09:00
Nathan Sobo
1bce626324 Compute ranges of cursors & selections in EditorComponent and pass down
Previously, SelectionsComponenet::shouldComponentUpdate was storing the
ranges for selections as a side effect. We also were passing boolean
values (cursorMoved and selectionUpdated) to determine if these
components should update.

Now, we compute a simple hash of screen ranges for selections and
cursors in the root component and pass them down. This simplifies
shouldComponentUpdate for selections and allows us to implement one
for cursors.
2014-06-03 17:43:55 +09:00
Nathan Sobo
d31669c67f Merge EditorScrollViewComponent into Editor
I don't think that this component was really carrying its weight. Its
render function basically passed through directly to other components
that updated between renders, but didn't contain any content on its
own that actually changed after the first render.

React components seem to carry overhead, so I want every component we
use to count. Also, I'm considering circumventing some of React's
standard update logic for performance reasons, and making the structure
more shallow will help with that.
2014-06-01 15:24:59 +09:00
Nathan Sobo
2548891b99 Clear the mousewheelScreenRow even if the event does not cause scrolling
If a mousewheel event is triggered when the editor can't be scrolled,
we still want to clear the mouseWheelScreenRow. This is typically done
when we stop scrolling, but if we never start scrolling it will never
happen. This commit adds another timeout to cover that case.
2014-05-31 18:36:59 +09:00
Nathan Sobo
115a7e1dfb 💄 Give mousewheel events their own describe block 2014-05-31 18:20:27 +09:00
Nathan Sobo
0043072ecf Only preserve mouseWheelScreenRow if it's out of the rendered row range
Fixes #2429, #2443

Otherwise, it's possible to duplicate lines. If a line is in the
rendered row range and it's not in the set of lines returned by the
editor, we should remove it no matter what. Line preservation is only
intended for lines that are out of view.
2014-05-31 08:56:57 +09:00
Nathan Sobo
89c57b6d52 Only set the mouseWheelScreenRow when scrolling vertically
When we handle a mousewheel event targeting a line or line number, we
assign the mousewheelScreenRow to prevent the removal of the target
node, which interferes with velocity scrolling.

However, the ::mousewheelScreenRow is only cleared 100ms after we stop
scrolling vertically. This means that if we're only scrolling
horizontally, it's never cleared. This causes the line node associated
with this screen row to hang around longer until the mousewheel screen
row is cleared again, which is not what we want.

This commit only assigns the ::mousewheelScreenRow when scrolling
vertically, so we can be sure it will be cleared.
2014-05-31 08:56:57 +09:00
Nathan Sobo
0e31557abf Only measure character widths when editor is visible 2014-05-23 15:59:44 -06:00
Nathan Sobo
446a48ca00 Position hidden input at 0,0 unless cursor is focused
The editor's scroll view is getting autoscrolled when the editor is
focused, so we won't position the hidden input until after the editor
is focused, and will always return it to 0,0 when the editor is blurred.
2014-05-22 20:13:50 -06:00
Nathan Sobo
875cfefd36 Merge branch 'master' into ns-ks-react-dont-measure-when-hidden
Conflicts:
	spec/editor-component-spec.coffee
	src/editor-component.coffee
	src/editor-scroll-view-component.coffee
	src/lines-component.coffee
2014-05-22 10:48:21 -06:00
Kevin Sawicki & Nathan Sobo
481935c880 Add specs for updating lineHeightInPixels when changing font size/family 2014-05-22 10:17:22 -06:00
Kevin Sawicki & Nathan Sobo
8ffcdad89a Re-measure the line height in pixels when the CSS line-height changes 2014-05-22 10:17:21 -06:00
Kevin Sawicki & Nathan Sobo
9e3ce09658 Rename lineHeight to lineHeightInPixels to distinguish from CSS value
CSS has a line-height property with values like '1.3', but we also have
a measured pixel value for line height. It's important to keep these
separate conceptually.
2014-05-22 10:17:12 -06:00
Kevin Sawicki & Nathan Sobo
45eeee9aea Ensure .lines div is always at least the height of the scroll view
This ensures that the wrap guide extends the entire height of the
editor.
2014-05-21 19:07:03 -06:00
Kevin Sawicki & Nathan Sobo
ee9d4ab70e Don't measure lineHeight/defaultCharWidth when editor is hidden 2014-05-21 17:15:47 -06:00