1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-10-31 19:42:43 +00:00
serenity/Libraries
Andreas Kling 1bef057ec3 LibGUI: Make the TextEditor widget store UTF-32 codepoints
A TextDocumentLine is now backed by a non-null-terminated sequence of
Unicode codepoints encoded as UTF-32 (one u32 per codepoint.)

This makes it possible to view and edit arbitrary Unicode text without
strange cursor and selection behavior. You can freely copy and paste
emojis between TextEditor and Terminal now. :^)

Storing UTF-32 is quite space-inefficient, but we should be able to
use the same optimization techniques as LibVT does to reduce it in
the typical case where most text is ASCII.

There are a lot of things that can be cleaned up around this code,
but this works well enough that I'm pretty happy with it.
2020-05-17 22:35:25 +02:00
..
LibAudio Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibC LibC: Don't let ctype isfoo() helpers access array out of bounds 2020-05-17 22:35:25 +02:00
LibCore LibCore: Allow ArgsParser::parse() to not exit on failure 2020-05-17 11:58:08 +02:00
LibCrypto Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibDebug Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibDesktop Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibELF Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
LibGemini LibGemini: Implement rendering text/gemini documents to HTML 2020-05-17 16:35:42 +02:00
LibGfx LibGfx: Add UTF-32 version of the text painting code paths 2020-05-17 22:35:25 +02:00
LibGUI LibGUI: Make the TextEditor widget store UTF-32 codepoints 2020-05-17 22:35:25 +02:00
LibHTTP LibGemini+LibHTTP: Defer did_progress call to match other callbacks 2020-05-17 12:41:38 +02:00
LibIPC Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibJS LibJS: Add symbol objects 2020-05-17 18:05:15 +02:00
LibLine Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibM LibM: Fix floor() and floorf() for negative numbers 2020-05-15 22:05:59 +02:00
LibMarkdown Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibPCIDB Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibProtocol Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibPthread Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibTextCodec Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibThread Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibTLS Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibUnwind LibUnwind: Create UnwindBase.h to capture the EH ABI in code 2020-05-14 08:50:10 +02:00
LibVT LibVT: Make TerminalWidget::selected_text() produce UTF-8 strings :^) 2020-05-17 22:35:25 +02:00
LibWeb LibGemini: Implement rendering text/gemini documents to HTML 2020-05-17 16:35:42 +02:00
LibX86 Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
CMakeLists.txt LibGemini: Implement basic Gemini protocol support 2020-05-17 12:41:38 +02:00