Commit Graph

415 Commits

Author SHA1 Message Date
Nathan Sobo
47338253db Adapt to new text-buffer API 2016-01-26 12:38:35 -07:00
Nathan Sobo
ed79413de1 Depend on DisplayLayer for more things 2016-01-19 14:39:37 -07:00
Nathan Sobo
acbacae6d5 Use TokenizedBuffer as a text decoration layer and render tags 2016-01-13 18:23:22 -07:00
Nathan Sobo
924d880fa8 WIP: Start rendering lines from DisplayLayers 2016-01-13 12:17:01 -07:00
Nathan Sobo
6669703677 Force a sync render when measuring if we don’t have a DOM node for a row 2016-01-04 16:40:56 -07:00
Nathan Sobo
9f6fbacddd Don’t clip screen positions in yardstick
By clipping positions only in the TextEditorComponent, we can ensure
that we check for the presence of a rendered line for the clipped row
value.
2016-01-04 16:32:38 -07:00
Max Brunsfeld
a16b99fa58 Merge pull request #10062 from atom/mb-emit-state-update-on-model-scroll
Emit state update when model's scroll position is changed
2015-12-14 17:38:36 -08:00
Max Brunsfeld
02ab7179ce Emit state update when model's scroll position is changed 2015-12-14 16:56:53 -08:00
Antonio Scandurra
2e7048d8c6 Merge pull request #10028 from atom/ns-remove-presenter-flags
Remove non-essential update guard flags from TextEditorPresenter
2015-12-14 11:43:19 +01:00
Antonio Scandurra
20e8856df1 💄 Minor stylistic change 2015-12-11 13:41:44 -07:00
Antonio Scandurra
d5f67494ab Add back shouldUpdateDecorations 2015-12-11 13:41:44 -07:00
Nathan Sobo
3233570c0d Remove flags from presenter. Always perform full state update.
Signed-off-by: Max Brunsfeld <maxbrunsfeld@github.com>
2015-12-11 13:41:44 -07:00
Nathan Sobo
5cfd3423bf Use internal scroll assignment methods when committing logical positions
This prevents an addition pending assignment and cuts directly to
adjusting the positions.
2015-12-11 13:34:46 -07:00
Nathan Sobo
85c6139579 Don’t force DOM updates in LinesYardstick
Instead, determine the need for a DOM update in the component before
measuring with the lines yardstick, and break `updateSync` into two
explicit pre- and post-measurement phases.
2015-12-10 14:47:05 -07:00
Antonio Scandurra
0218431c62 🐛 Compute content width when the longest row is the first one 2015-11-19 16:38:20 -08:00
Nathan Sobo
b04c26ba30 Discard highlights that end above the visible row range
Fixes #9628
2015-11-18 21:32:05 -08:00
Max Brunsfeld
9a35e4c9ec 🎨 Extract methods for setting scroll position based on model 2015-11-10 16:28:31 -08:00
Max Brunsfeld
fefb387d3c Merge branch 'master' into mb-synchronous-scroll-position
Conflicts:
	src/text-editor-presenter.coffee
	src/text-editor.coffee
2015-11-10 16:23:39 -08:00
Max Brunsfeld
48cc5e713e Make presenter respond to external changes to model's first visible screen row 2015-11-09 10:13:09 -08:00
Nathan Sobo
fe88611e79 Tear down timers when destroying TextEditorPresenter 2015-11-09 00:35:33 -07:00
Nathan Sobo
a3ff0ad75a 🎨 Rename method 2015-11-09 00:35:28 -07:00
Nathan Sobo
d7b0ab9179 Simplify updating of custom gutter decoration state 2015-11-09 00:35:27 -07:00
Nathan Sobo
92ed7c8b15 Don’t return Decoration objects from model to view
Preparation for LayerDecorations, in which individual decoration objects
won’t exist for every marker.
2015-11-09 00:35:27 -07:00
Nathan Sobo
d46091d7e5 Remove dead code 2015-11-09 00:35:27 -07:00
Nathan Sobo
800440d5ca Remove logging 2015-11-09 00:35:27 -07:00
Max Brunsfeld
cdaac9dfcc wip 2015-11-09 00:35:18 -07:00
Max Brunsfeld
b58752da38 Keep model's logical scroll position up to date
* Remove scrollRow and scrollColumn properties from the presenter
* Assign presenter's scrollTop and scrollLeft based on model's first visible
  screen row and column, once the presenter has the required measurements.
2015-11-06 11:16:56 -08:00
Max Brunsfeld
4d40e28c6b Remove presenter constructor parameters that aren't used in production 2015-11-06 09:56:58 -08:00
Antonio Scandurra
40e3b08a8c Add TextEditorElement::getMaxScrollTop 2015-10-20 08:36:27 +02:00
Antonio Scandurra
b03aa4bf40 Merge branch 'master' into as-cjk-soft-wrap
# Conflicts:
#	spec/display-buffer-spec.coffee
2015-10-16 10:23:44 +02:00
Antonio Scandurra
4766c98bbe Treat Korean characters as different kinds of chars 2015-10-15 21:02:21 +02:00
Antonio Scandurra
7394cc531c Measure half width characters 2015-10-15 20:06:38 +02:00
Antonio Scandurra
4c66341624 Measure double width char widths 2015-10-15 18:08:35 +02:00
Max Brunsfeld
32780e2823 Merge branch 'master' into ns-alternative-test-env
Conflicts:
	package.json
2015-10-14 14:12:42 -07:00
Antonio Scandurra
6b01811d20 Avoid stack overflow when scrolling with non-integer values
We were mistakenly using the rounded scroll top to guard against such cases.
This fixes it by using `@realScrollTop` instead.
2015-10-14 16:10:12 +02:00
Nathan Sobo
4c51d29868 Merge remote-tracking branch 'origin/master' into ns-alternative-test-env 2015-10-07 16:10:29 -05:00
Nathan Sobo
3636eb35d8 Merge pull request #8811 from atom/as-double-reflow-measurements
DOM-based measurements
2015-10-07 15:43:59 -05:00
Antonio Scandurra
112ee01bd9 Don't use atom globals in TextEditorElement
...except when the element is instantiated via HTML
2015-10-07 15:25:01 -05:00
Antonio Scandurra
a767ca9892 🚱 Dispose ::onDidUpdateMarkers in presenter 2015-10-07 09:54:59 +02:00
Antonio Scandurra
428f0db75b 🔥 2015-10-06 11:02:36 +02:00
Antonio Scandurra
e8387e0095 🐎 2015-10-06 11:00:50 +02:00
Antonio Scandurra
b31d3d1a3f Revert "🐎 Faster line number calculation"
This reverts commit e04aef0af3.
2015-10-06 09:16:29 +02:00
Antonio Scandurra
e04aef0af3 🐎 Faster line number calculation 2015-10-05 17:36:28 +02:00
Antonio Scandurra
1c56c3f951 🎨 2015-10-05 16:32:51 +02:00
Antonio Scandurra
0bee6a0cc1 Avoid invalidating state when clearing screen rows to measure 2015-10-05 16:10:58 +02:00
Antonio Scandurra
beb7896234 Enable subpixel font scaling
For certain font sizes, enabling `textRendering: optimizeLegibility` caused a
bunch of measurement-related issues. You can reproduce it by setting the following in your stylesheet:

```
atom-text-editor {
  font-size: 14px;
  text-rendering: optimizeLegibility;
}
```

Although I wanted to defer subpixel font scaling to a later moment, it seems
like Chrome needs to have it enabled in order to properly support the
"legibility" path for text rendering. (I guess this is part of the reason why
the Chromium team enabled it by default at some point in the past.)
2015-10-02 18:14:09 +02:00
Antonio Scandurra
2ffa7da59e 🐎 Remove rows to measure in the next frame 2015-10-02 12:38:19 +02:00
Antonio Scandurra
e1c3d2ef57 🐎 Avoid recomputing state for lines twice 2015-10-01 17:42:44 +02:00
Antonio Scandurra
b16d2a59f2 💚 2015-10-01 13:58:13 +02:00
Antonio Scandurra
e94ff33d83 🐛 Exclude invalid tiles 2015-10-01 12:58:02 +02:00