Commit Graph
114 Commits
Author SHA1 Message Date
Max Carter 祁明思 6043651563 Add letter spacing and text transforms to GPUI (#111)
* Add text spacing and transform style plumbing

* Apply byte-stable transforms and spacing-aware truncation

* Add platform letter spacing support

* Fix scheduler clippy warning

* Refresh dependency lockfile

* Fix CI for text spacing changes

* Add text transform preview example
2026-08-07 21:48:02 -07:00
temportalflux cb26ad76dc remove stop_propagation on_mouse_up to avoid unintended consequence of input always highlighting/selecting while mousing over 2026-07-11 13:16:17 -04:00
temportalflux 7c0de7f924 add gpui_elements root documentation so its not weird that the docs page is empty 2026-07-11 13:00:54 -04:00
temportalflux 32cca07bb4 add an extremely basic example for editable_text which only shows a subset of what is documented in the module 2026-07-11 13:00:54 -04:00
temportalflux 5bfb5ef58b fix caret getting stuck as visible without focus when the text field pauses blinking while it is without focus 2026-07-11 09:31:07 -04:00
temportalflux 09be9ed98e stop propagation of mouse events when clicking on editable text, so that users which consume click events on wrapping elements do not receive events when they are used to focus/update the editable text state 2026-07-11 09:31:07 -04:00
temportalflux d5b3191738 add simpler api for configuring the caret blink interval via element 2026-07-11 09:31:07 -04:00
temportalflux d6d35ab410 add external api for access to caret by routing it through keyed element data 2026-07-11 09:31:07 -04:00
temportalflux 8f99657171 fixup typos 2026-07-11 09:31:07 -04:00
temportalflux 25f922283a refactor text position queries by factoring out common logic 2026-07-11 09:31:07 -04:00
temportalflux 50b01e0532 first pass at simplifying text position queries 2026-07-11 09:31:07 -04:00
temportalflux 760a79c3ca rework caret implementaiton to increase clarity and reduce code duplication 2026-07-11 09:31:07 -04:00
temportalflux bd7bbdd0e6 reorganize element implementation to be more readable 2026-07-11 09:31:07 -04:00
temportalflux 151d2c32aa assign default editable text colors as consts 2026-07-11 09:31:07 -04:00
temportalflux 252683a830 reduce complexity of mouse click handler and cut/copy handlers 2026-07-11 09:31:07 -04:00
temportalflux db856ae57a reduce bounds_for_range to be more readable 2026-07-11 09:31:07 -04:00
temportalflux 3a7d11a808 remove EditableTextState::storage() in favor of direct access to the member 2026-07-11 09:31:07 -04:00
temportalflux 0daa97cd47 resolve clippy errors from using Range in reverse. Add CaretSelection to represent a bidirectional inclusive range 2026-07-11 09:31:07 -04:00
temportalflux 8c0d58c86b collapse styling of conditions 2026-07-11 09:31:07 -04:00
temportalflux bbf2679380 reorganize blocks in editable text element 2026-07-11 09:31:07 -04:00
temportalflux 787d747deb migrate EditableTextActionElement::register_action and bindings to an internal macro 2026-07-11 09:31:07 -04:00
temportalflux 2cc4f237d6 rework element api to expose EditableTextState as a viable entity for users to create via use_keyed_state 2026-07-11 09:31:07 -04:00
temportalflux cc055b7f7d add very basic text sanitation for no-multiline fields 2026-07-11 09:31:07 -04:00
temportalflux 44e65e544f rework focus handle semantics to only use Window::set_focus_handle during prepaint instead of requiring changes to Interactivity 2026-07-11 09:31:07 -04:00
temportalflux 812d5aa91a add on_text_changed callback binding to allow the caller to be notified on every change to the text 2026-07-11 09:31:07 -04:00
temportalflux 6beeecb5a8 add module-level documentation with examples 2026-07-11 09:31:07 -04:00
temportalflux 1502a54b34 add action default_bindings documentation table 2026-07-11 09:31:07 -04:00
temportalflux 579b8d06f1 collapse UnicodeTextStorage api to only expose methods operating on the direction/boundary enums 2026-07-11 09:31:07 -04:00
temportalflux 18c80084d2 fill out more documentation 2026-07-11 09:31:07 -04:00
temportalflux cf6f785661 replace async-io timer with background executor timer 2026-07-11 09:31:07 -04:00
temportalflux e0458531dd add editable text documentation 2026-07-11 09:31:07 -04:00
temportalflux e91181535a rename actions to be more clear 2026-07-11 09:31:07 -04:00
temportalflux 8156acd872 apply paint order to editable text elements (text, ime, selection, caret) 2026-07-11 09:31:07 -04:00
temportalflux 0b47bd71e7 add some documentation 2026-07-11 09:31:07 -04:00
temportalflux 717f465001 reorganize editable text implementation for maintainability 2026-07-11 09:31:07 -04:00
temportalflux 5e6d3028e0 remove previous input iteration 2026-07-11 09:31:07 -04:00
temportalflux de19ea0d6d fix discrpencies between where to render the caret and determining what line semantically contains the caret 2026-07-11 09:31:07 -04:00
temportalflux f3e9ae3c56 add caret blinking which is handled via a separate entity 2026-07-11 09:31:07 -04:00
temportalflux e7e4c9adf4 rearrange element quad building 2026-07-11 09:31:07 -04:00
temportalflux 962f89c4a2 add color mutators on element 2026-07-11 09:31:07 -04:00
temportalflux 126db6dbbe scroll the area when the caret moves out of view 2026-07-11 09:31:07 -04:00
temportalflux 0ae4c8f146 port over tests from previous iteration 2026-07-11 09:31:07 -04:00
temportalflux 246bc3e6e4 implement undo/redo history tracking 2026-07-11 09:31:07 -04:00
temportalflux 58c66d50f2 resolve deprecated num_visual_lines 2026-07-11 09:31:07 -04:00
temportalflux dd61395440 add accepts_input flag as a way to track an input field's disabled state 2026-07-11 09:31:07 -04:00
temportalflux b5acea4809 merge element and state implementations back to a single type 2026-07-11 09:31:07 -04:00
temportalflux 76a02bbc46 add default-value via init-storage 2026-07-11 09:31:07 -04:00
temportalflux c1d3deb170 rename editable text module structs for consistency 2026-07-11 09:31:07 -04:00
temportalflux e84af920b9 properly implement overflow-driven scrolling via interactivity 2026-07-11 09:31:07 -04:00
temportalflux 3cff5195e2 implement coarse approach to navigating up and down a large textarea 2026-07-11 09:31:07 -04:00