mirror of
https://github.com/servo/servo.git
synced 2025-08-14 18:05:36 +01:00
fix: Crashing due to input element hack (#36461)
This PR addresses a crash in text input element due to a hack to prevent text input being trimmed. The updated behavior will only add `zero width space` unicode character to the node if there's no text content instead of adding it constantly. Also by adding the same `zero width space` unicode character to text area when there's no text content within will allow text area element to properly display caret. <img width="197" alt="截圖 2025-04-11 中午12 51 00" src="https://github.com/user-attachments/assets/10bc7314-9aa3-49df-baac-ef26d39a96d8" /> This PR also addresses issues with multiple glyph runs: https://github.com/user-attachments/assets/658db56f-b166-47ec-bc77-c6c13114d669 Testing: This PR is tested using: - `./mach run -d 'data:text/html,<input id="input_element" value="xxxxxxxxxxxxxxxxxxxx">'` - `./mach run -d 'data:text/html,<textarea id="input_element" value="xxxxxxxxxxxxxxxxxxxx">'` without causing crashes, while the results should be covered by WPT tests Fixes: https://github.com/servo/servo/issues/36449 --------- Signed-off-by: DK Liao <dklassic@gmail.com>
This commit is contained in:
parent
972ca77ce1
commit
5df4c760d3
5 changed files with 14 additions and 11 deletions
|
@ -166,7 +166,7 @@ impl TextRunSegment {
|
|||
self.bidi_level,
|
||||
ServoRange::<ByteIndex>::new(
|
||||
byte_processed + ByteIndex(self.range.start as isize),
|
||||
run.range.length(),
|
||||
ByteIndex(self.range.len() as isize) - byte_processed,
|
||||
),
|
||||
);
|
||||
byte_processed = byte_processed + run.range.length();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue