mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-10 10:02:38 +00:00
* Type: a Backspace and the text typed after it in one frame apply in order The Type tool received all of a frame's typed text and IME events first, and the frame's Backspace, Delete, arrows, Home, End, Tab and clipboard keys afterwards. Enter went to the tool before the text, and several Enters in one frame added one line break. A phonetic keyboard tool can replace a character it typed by sending a Backspace and the new character: ন for n, then a Backspace and ং when g follows. When the Backspace and ং arrived in one frame, ং was inserted and then deleted, so ন was left where ং belonged (#2615). route_type_input now takes the frame's text, IME events, editing keys, Enter and clipboard events in one pass, in the order they came. The Type tool still drops the keys of a frame that began with IME marked text, and the keys that come while the IME composes. A key or clipboard event that comes before a new composition in the same frame is now applied instead of dropped, and an Enter in the same frame as an Escape no longer types a line break. * Type: a command bound to Cmd+Enter runs without typing a line break While the Type tool edits text, Enter went to the tool as a line break before the shortcuts ran, so a command bound to Cmd/Ctrl+Enter also typed a line break. Enter now types a line break only when no command is bound to its chord. Plain Enter, and Cmd+Enter with nothing bound to it, type a line break as before. * Type: Enter, arrows, Home, End, Tab and the clipboard go in type_text's ordered pass Enter, the arrows, Home, End, Tab, Backspace and Delete with modifiers, Type > Bold and Italic, and the clipboard events now join the ordered pass in type_text that takes text, IME events and plain Backspace and Delete, instead of a separate pass that replaced it. route_type_input is split into type_input, which takes one event, and apply_type_input. Every event the Type tool takes, text and IME events included, is removed from the input. An Enter press whose chord a command is bound to stays in the input for the shortcuts. The check uses chord_runs_a_command, which runs_a_command now calls for each press, so the separate Cmd+Enter check in route_type_input is removed. A plain Enter and a bound Cmd+Enter in one frame type one line break and run the command. hook_ime_backspace_and_reinject_builds_vietnamese covers a Backspace and the text after it in one frame, so the Bangla test is removed. The order test covers Home, End, Tab, a paste, and a key that comes before a composition starts in the same frame. * Type: editing keys after an IME commit apply in the same frame In a frame that began with a composition, the Type tool dropped every editing key, also one that came after the IME committed its text, so a frame of a commit, ← and a letter typed the letter after the committed text without moving the caret. Editing keys after a commit in that frame now apply in order. A key that comes while the composition is still open, and an Enter in a frame that began composing, still belong to the IME. * Type: Shift+Enter types a soft return when keys apply in order with the text The ordered Type tool input passed Enter to the tool without its modifiers, so Shift+Enter typed a line break instead of the soft return main added. Enter now carries the key's modifiers. * Type: test Home, Tab and Backspace against the frame's earlier text A new test types text, Home and text in one frame, Tab inside a line, and a paste followed by Backspace, and checks that each acts on the text the earlier events left. It fails on main, where those keys apply after all of the frame's text. The Enter and Escape loop in shortcuts::handle skips Enter with `skip` instead of an `if`, which keeps the function under main's cognitive-complexity limit.