text: Introduce layout coordinate space and transforms #18448
+38
−34
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a refactor that aims at code simplification and deduplication of logic. Specifically, it introduces the idea of layout coordinate space and implements transforms from local coordinate space to layout coordinate space and vice-versa.
By using these transforms it's easier and less error-prone to get coordinates within text.
This also simplifies text field rendering, pushing only one transform onto the stack instead of two.
After implementing this, I'm fairly certain that
is_link_at
is also broken, as it doesn't take into account translation resulting from bounds and it incorrectly compensates for the gutter. I'll leave this however for a future fix with tests.