Timothy Flynn
3a072f66e3
LibWeb: Pass Utf16String around directly in Editing APIs
...
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Noticed while working adjacent to these APIs that we take a Utf16String
and pass it around as a Utf16View, only to re-allocate the Utf16String
in many commands. Let's just pass the string itself around.
2025-07-26 00:40:06 +02:00
Timothy Flynn
f001dbea30
LibWeb: Add missing includes to Editing/Commands.h
...
clangd is complaining loudly about these.
2025-07-26 00:40:06 +02:00
Jelle Raaijmakers
e029e785d2
LibWeb: Convert Editing API internals to UTF-16
...
Both sides of the Editing internals now have to deal with some awkward
converting between UTF-8 and UTF-16, but the upside is that it
immediately exposed an issue with the `insertText` command: instead of
dealing with code units, it was iterating over code points causing the
selection to be updated only once instead of twice. This resulted in the
final selection potentially ending up in between a surrogate pair.
Fixes #5547 (pasting/typing surrogate pairs).
2025-07-24 07:18:25 -04:00
Jelle Raaijmakers
0bb0061915
LibWeb: Fire input
events in .execCommand()
...
We do not fire `beforeinput` events since other browsers do not seem to
do so either.
The spec asks us to check whether a command's action modified the DOM
tree. This means adding or removing nodes and attributes, or changing
character data anywhere in the tree. We have
`Document::dom_tree_version()` for node updates, but for character data
a new version number is introduced that allows us to easily keep track
of any text changes in the entire tree.
2025-01-24 23:53:26 +01:00
Jelle Raaijmakers
98ec1825de
LibWeb: Implement the "useCSS" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
70af48c18b
LibWeb: Implement the "selectAll" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
03bcfb9b8c
LibWeb: Implement the "outdent" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
fbc0d40d2c
LibWeb: Implement the "justifyCenter/Full/Left/Right" editing commands
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
1c3251e2d5
LibWeb: Implement the "insertUnorderedList" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
26cadf06d2
LibWeb: Implement the "insertText" editing command
...
Minus the autolinking algorithm.
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
199eaf0d3e
LibWeb: Implement the "insertOrderedList" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
01ce9cb151
LibWeb: Implement the "insertImage" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
20fb7b1a49
LibWeb: Implement the "insertHTML" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
cb05ab6515
LibWeb: Implement the "insertHorizontalRule" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
c6cde85534
LibWeb: Implement the "indent" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
a12d887eb4
LibWeb: Implement the "formatBlock" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
e686328cbd
LibWeb: Implement the "unlink" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
043a28baeb
LibWeb: Implement the "underline" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
679fbb5eda
LibWeb: Implement the "superscript" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
ef8af01e1d
LibWeb: Implement the "subscript" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
8c51d6863f
LibWeb: Implement the "strikethrough" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
aee8a75c40
LibWeb: Implement the "removeFormat" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
ae12f7036b
LibWeb: Implement the "italic" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
228c66f2e1
LibWeb: Implement the "foreColor" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
1d2500e31f
LibWeb: Implement the "fontSize" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
9366a50dd3
LibWeb: Implement the "fontName" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
1b02e0dea3
LibWeb: Implement the "createLink" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
05386fe99c
LibWeb: Implement the "backColor" and "hiliteColor" editing commands
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
7736d63290
LibWeb: Implement the "forwardDelete" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
a71e999ac8
LibWeb: Implement the "bold" editing command
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
2b6a14c5ee
LibWeb: Implement "preserves overrides" property of editing commands
2025-01-10 23:33:35 +01:00
Jelle Raaijmakers
c90c5aad29
LibWeb: Implement the "record current states and values" Editing algo
2024-12-21 19:15:58 +01:00
Jelle Raaijmakers
433c19c1ed
LibWeb: Lay out CommandDefinitions for Editing API a bit nicer
...
No functional changes.
2024-12-21 19:15:58 +01:00
Jelle Raaijmakers
495006ddb5
LibWeb: Implement document.execCommand('insertLinebreak')
2024-12-10 19:34:38 +01:00
Jelle Raaijmakers
4f76cec096
LibWeb: Implement document.execCommand("insertParagraph")
2024-12-04 06:51:59 +01:00
Jelle Raaijmakers
a62b664d0d
LibWeb: Put editing command "styleWithCSS" in alphabetical order
2024-12-04 06:51:59 +01:00
Jelle Raaijmakers
4b0d8cbfad
LibWeb: Implement document.execCommand("styleWithCSS")
2024-11-30 17:35:45 +01:00
Jelle Raaijmakers
4a64557876
LibWeb: Implement document.execCommand("defaultParagraphSeparator")
2024-11-30 17:35:45 +01:00
Jelle Raaijmakers
7bb865052a
LibWeb: Implement document.execCommand("delete")
...
To facilitate the implementation of "delete" and all associated
algorithms, split off this piece of `Document` into a separate
directory.
This sets up the infrastructure for arbitrary commands to be supported.
2024-11-30 17:35:45 +01:00