Timothy Flynn
5d11614bc7
LibJS: Implement String.prototype.charAt with UTF-16 code units
2021-07-22 09:10:44 +02:00
Timothy Flynn
2bba20d123
LibJS: Report string properties using UTF-16 code units
...
String length is reported as the number of UTF-16 code units, and string
indices are reported as the UTF-16 code units themselves.
2021-07-22 09:10:44 +02:00
Timothy Flynn
0c42aece36
LibJS: Transcode UTF-8 strings to UTF-16 and add UTF-16 accessors
...
LibJS parses JavaScript as UTF-8, so when creating a string, we must
transcode it to UTF-16 to handle encoded surrogate pairs.
For example, consider the following string:
"\ud83d\ude00"
The UTF-8 encoding of this surrogate pair is:
0xf0 0x9f 0x98 0x80
However, LibJS will currently store the two surrogates individually as
UTF-8 encoded bytes, rather than combining the pair:
0xed 0xa0 0xb8, 0xed 0xb8 0x80
These are not equivalent. So, as String.prototype becomes UTF-16 aware,
this encoding will no longer work for abstractions like strict equality.
2021-07-22 09:10:44 +02:00
Timothy Flynn
0e25d2393f
LibJS: Add UTF-16 tests to String.prototype methods that already work
...
These methods did not require UTF-16 views, so just add test cases to
ensure they remain correct.
This also adds a couple of FIXME comments on tests that will fail even
with UTF-16 String.prototype support (for reasons such as lack of UTF-16
support in RegExp.prototype and Unicode case folding).
2021-07-22 09:10:44 +02:00
Timothy Flynn
9b83cd1abf
AK: Add Utf16View for decoding UTF-16 strings
...
Also includes a way to transcode from and to UTF-8 strings.
2021-07-22 09:10:44 +02:00
Gunnar Beutner
bcf5e5ee5a
AK: Disable clang-format for AK/Time.h
...
clang-format >=12 format this file incorrectly/differently.
2021-07-22 08:57:01 +02:00
Gunnar Beutner
eaad94751c
Kernel: Fix incorrect format template
2021-07-22 08:57:01 +02:00
Gunnar Beutner
b4272d731f
Kernel: Make sure crash dumps are properly aligned on x86_64
2021-07-22 08:57:01 +02:00
Gunnar Beutner
0e0985f15c
Utilities: Make the columns for readelf fit all reloc types on x86_64
2021-07-22 08:57:01 +02:00
Gunnar Beutner
db1c5c4830
LibELF+Utilities: Avoid truncating 64-bit values
...
This fixes displaying 64-bit addresses in readelf and also fixes
showing backtraces from core dumps on x86_64.
2021-07-22 08:57:01 +02:00
Gunnar Beutner
36c3927169
Utilities: Make sure columns are properly aligned for readelf on x86_64
2021-07-22 08:57:01 +02:00
Gunnar Beutner
29c5dcd2fa
Utilities: Make sure columns are properly aligned for pmap on x86_64
2021-07-22 08:57:01 +02:00
Gunnar Beutner
11e02f222d
AK: Add a getter to JsonValue to get machine-native addresses
2021-07-22 08:57:01 +02:00
Gunnar Beutner
36e36507d5
Everywhere: Prefer using {:#x} over 0x{:x}
...
We have a dedicated format specifier which adds the "0x" prefix, so
let's use that instead of adding it manually.
2021-07-22 08:57:01 +02:00
Gunnar Beutner
31f30e732a
Everywhere: Prefix hexadecimal numbers with 0x
...
Depending on the values it might be difficult to figure out whether a
value is decimal or hexadecimal. So let's make this more obvious. Also
this allows copying and pasting those numbers into GNOME calculator and
probably also other apps which auto-detect the base.
2021-07-22 08:57:01 +02:00
FrHun
7bfd319652
NetworkApplet: Omit unnecessary newline in tooltip
2021-07-22 04:33:41 +02:00
FrHun
02c0b1f380
LibGUI: Fix multi-line tooltip height
...
Tooltips had a wrong calculation for the height of a tooltip window,
because they forgot to take into account the line spacing.
2021-07-22 04:33:41 +02:00
Gunnar Beutner
3904541938
LibC: Don't truncate arguments for ioctl() on x86_64
...
Among other things this makes "less" work on x86_64.
2021-07-22 04:18:39 +04:30
Karol Kosek
f2c9ef3763
WindowServer: Reuse config variable from the class on theme change
...
When changing the theme, there were two Core::ConfigFile instances
(one class scoped -- m_config and one function scoped -- wm_config)
fighting over the file, resulting in not saving the new theme name
to the config. :^(
This makes WindowServer remember selected theme from the menu
after reboot!
2021-07-22 00:26:44 +02:00
Idan Horowitz
d804ce830d
LibJS: Implement Temporal.PlainDate.prototype.equals & Required AO
2021-07-21 22:49:37 +01:00
Idan Horowitz
cf78efaef5
LibJS: Implement the ToTemporalDate Abstract Operation
...
This is required by most Temporal.PlainDate.prototype methods.
2021-07-21 22:49:37 +01:00
Idan Horowitz
1e471e2e2f
LibJS: Add Temporal.Calendar.prototype.dateFromFields & required AOs
...
This is required for implementing the DateFromFields PlainDate AO.
2021-07-21 22:49:37 +01:00
Idan Horowitz
7a33a5c9b5
LibJS: Use trunc instead of a static_cast<i64> in is_integral_number
...
This ensures we return true for integers that do not fit in an i64 aka,
above 9223372036854775807. (2**63 - 1)
2021-07-21 22:49:37 +01:00
Idan Horowitz
44c8e158c1
LibJS: Remove usages of String's null state in Temporal AOs
2021-07-21 22:49:37 +01:00
Idan Horowitz
68aad5d8fa
LibJS: Implement Temporal.PlainDate.prototype.valueOf
2021-07-21 22:49:37 +01:00
Karol Kosek
3c62b661f4
LibAudio: Fix UTF-8 decoding logic in FLAC decoding :^)
...
The problem here was that the multi-byte UTF-8 encoded characters
were taking one byte too much, misaligning the data completely
and eventually crashing the program on the 128th frame.
This change reduces the for loop by one, as it has been already
calculated from the start_byte variable.
2021-07-21 22:12:44 +02:00
Karol Kosek
9c71e43c3f
LibAudio: Check if zero-bit padding is actually zero
...
This might allow the program to return an error a bit quicker.
2021-07-21 22:12:44 +02:00
Andreas Kling
f9b7ea6de9
Revert "Kernel: Use IntrusiveList for keeping track of InodeWatchers"
...
This reverts commit 43d6a7e74e
.
This breaks multi-inode watchers.
2021-07-21 21:24:26 +02:00
Andreas Kling
687a12d7fb
Userland: Add GUI::Window::add_menu() and use it everywhere
...
Applications previously had to create a GUI::Menubar object, add menus
to it, and then call GUI::Window::set_menubar().
This patch introduces GUI::Window::add_menu() which creates the menubar
automatically and adds items to it. Application code becomes slightly
simpler as a result. :^)
2021-07-21 21:24:26 +02:00
Ariel Don
a4fdb7f029
VimEditingEngine: Prevent crash upon 'x' or 'v' on blank lines
...
Previously, pressing 'x' for deletion on an otherwise empty line
insinuated a crash in TextEditor because a nonexistent code point was
accessed -- likewise for visual mode.
2021-07-21 21:13:57 +02:00
Andreas Kling
79745507a9
Kernel: Use IntrusiveList for keeping track of GenericInterruptHandlers
2021-07-21 20:21:29 +02:00
Andreas Kling
a9f76b8270
Kernel: Remove Inode's inheritance from Weakable
...
Nobody was using WeakPtr<Inode> anywhere, so there's no need for this
to inherit from Weakable.
2021-07-21 20:17:55 +02:00
Andreas Kling
43d6a7e74e
Kernel: Use IntrusiveList for keeping track of InodeWatchers
2021-07-21 20:17:55 +02:00
Andreas Kling
cdc1315dc8
LibJS: Use IntrusiveList for keeping track of WeakContainers
2021-07-21 20:17:55 +02:00
Andreas Kling
3fe1be20b7
LibJS: Use IntrusiveList for keeping track of MarkedValueLists
2021-07-21 19:51:19 +02:00
Andreas Kling
746b310061
LibJS: Use IntrusiveList for keeping track of HandleImpls
...
This allows us to remove a HashTable from heap and cuts down on
some of the malloc traffic when creating handles.
2021-07-21 19:45:21 +02:00
Andreas Kling
8ea029405f
AK: Sprinkle [[nodiscard]] on AK::Array
2021-07-21 18:22:10 +02:00
Andreas Kling
4b0498e38b
AK: Convert Array to east-const style
2021-07-21 18:21:15 +02:00
Andreas Kling
a940a8bf37
AK: Remove unused private HashTable::lookup_for_reading()
2021-07-21 18:18:51 +02:00
Andreas Kling
f65b039c44
AK: Sprinkle [[nodiscard]] on HashMap and HashTable
2021-07-21 18:18:29 +02:00
Andreas Kling
3d0c5814d2
LibGfx: Sprinkle [[nodiscard]] on Gfx::Bitmap
2021-07-21 18:09:05 +02:00
Andreas Kling
583d6741ed
AK: Sprinkle [[nodiscard]] on AK::Bitmap
2021-07-21 18:09:01 +02:00
Andreas Kling
a5c9a31001
AK: Remove unused HashMap::remove_one_randomly()
2021-07-21 18:08:11 +02:00
Andreas Kling
c7d891765c
LibGfx: Use "try_" prefix for static factory functions
...
Also mark them as [[nodiscard]].
2021-07-21 18:02:15 +02:00
Andreas Kling
f0409081f5
LibC: Simplify assertion failure dbgln() a bit
...
There's no need to say USERSPACE(PID) since dbgln() will prefix lines
with that information anyway.
2021-07-21 17:45:24 +02:00
LuK1337
de09a92bf8
DesktopPicker: Add mouse wheel control
...
This lets us use scroll wheel up/down to move between columns and
shift + scroll wheel up/down to move between rows.
2021-07-21 18:04:30 +04:30
Jamie Mansfield
137d716495
LibLine: Correct spelling mistake in variable name
...
This corrects the spelling of 'matching' from 'macthing'.
2021-07-21 14:15:24 +02:00
Jamie Mansfield
3be472176d
KeyboardSettings: Use typical OK-Cancel-Apply arrangement
...
This brings KeyboardSettings in line with the other settings
applications.
2021-07-21 12:34:27 +02:00
Ralf Donau
6629af8bed
TextEditor: Tighten unveil
...
Only read access to the file_to_edit is required since
FileSystemAccessServer handles all other requests.
2021-07-21 10:47:22 +02:00
Andreas Kling
a34a9e8698
Base: More tweaks to the MouseSettings icons
2021-07-21 01:29:45 +02:00