1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2026-01-13 00:11:00 +00:00
Commit graph

11064 commits

Author SHA1 Message Date
FrHun
80ea141ffe LibGUI: Calculate Window min_size on show 2022-07-04 11:15:40 +02:00
MacDue
61b447e53f LibWeb: Shrink border radii for background-clip and support with images
Since background layers can have different clipping this has also
required doing the corner clipping for each layer, rather than
just once.
2022-07-04 11:12:44 +02:00
MacDue
0070c28714 LibWeb: Add .shrink() to BorderRadiusData and BorderRadiiData 2022-07-04 11:12:44 +02:00
Igor Pissolati
44057c9482 LibWeb: Make hit testing respect hidden overflow 2022-07-04 11:09:27 +02:00
Linus Groh
4b70ddf5a0 LibJS: Let Array.prototype.toSpliced throw RangeError for len <= 2^53-1
This aligns it with the spec again, it was clarified that the additional
range check before ArrayCreate is intentional:
https://github.com/tc39/proposal-change-array-by-copy/issues/94

Also cast the final variable to an u64 instead of size_t after we have
determined that it is safe to do so, as that's what Array::create()
takes now.
2022-07-04 10:10:11 +02:00
Linus Groh
5927cdd9c5 LibJS: Use u64 for the length parameter in Array::create()
This doesn't matter per se as the value is immediately validated to be
in the 0 to 2^32 - 1 range, but it avoids having to cast a number that
potentially doesn't fit into a size_t into one at the call site. More
often than not, array-like lengths are only validated to be <= 2^52 - 1,
i.e. MAX_SAFE_INTEGER.

This is fully backwards compatible with existing code as a size_t always
fits into an u64, but an u64 might not always fit into a size_t.
2022-07-04 10:10:11 +02:00
Linus Groh
65eb1ee67a LibJS: Add spec comments to ArrayCreate 2022-07-04 10:10:11 +02:00
Linus Groh
1132151f3d LibJS: Use a template for 'Value from integral number' constructors
This also allows constructing from other integral types like u64, which
would have been ambiguous before (at least on i686):

```
error: call of overloaded 'Value(u64&)' is ambiguous
note: candidate: 'JS::Value::Value(i32)'
  175 |     explicit Value(i32 value)
      |              ^~~~~
note: candidate: 'JS::Value::Value(unsigned int)'
  164 |     explicit Value(unsigned value)
      |              ^~~~~
note: candidate: 'JS::Value::Value(long unsigned int)'
  153 |     explicit Value(unsigned long value)
      |              ^~~~~
note: candidate: 'JS::Value::Value(double)'
  141 |     explicit Value(double value)
      |              ^~~~~
```
2022-07-04 10:10:11 +02:00
Marcus Nilsson
da8eea69e4 LibDebug: Make sure current_breakpoint has value before usage
Previously this caused a crash when no breakpoint was active since we
tried to get value().address before the has_value() check.
2022-07-03 21:54:46 +00:00
Linus Groh
643faa1144 Everywhere: Fix two inconsistent serenity_lib() output names
- No underscores between word boundaries, i.e. `languageserver` and not
  `language_server` for LibLanguageServer
- All lowercase, i.e. `coredump` and not `Coredump` for LibCoredump
2022-07-03 22:59:13 +02:00
Kenneth Myhra
445c3050d4 LibWeb: Wire up XHR::ontimeout event 2022-07-03 13:26:32 +02:00
Kenneth Myhra
92a3803066 LibWeb: Add timeout_callback to ResourceLoader::load() 2022-07-03 13:26:32 +02:00
Kenneth Myhra
07b6c7114b LibWeb: Use a single shot timer instead of an ordinary repetitive timer 2022-07-03 13:26:32 +02:00
Linus Groh
ab2574d75f LibJS: Avoid potential overflow in Array.prototype.toSpliced()
The implementation no longer matches the spec text, but I believe that's
a bug anyway. No point in allowing array lengths up to 2^53 - 1 when the
ArrayCreate AO rejects anything above 2^32 - 1.
2022-07-03 13:06:44 +02:00
Obinna Ikeh
5f726ace53 LibJS: Add tests for %TypedArray%.prototype.toReversed 2022-07-03 01:12:32 +02:00
Obinna Ikeh
f78ef60be6 LibJS: Add %TypedArray%.prototype.toReversed 2022-07-03 01:12:32 +02:00
Idan Horowitz
1ebc5af2f0 LibJS: Set both {minimum, maximum}FractionDigits in Intl.DurationFormat
This is a normative change in the Intl.DurationFormat spec.

See: b293603e
2022-07-02 18:32:35 +03:00
Idan Horowitz
fb8c4a724e LibJS: Disallow mixed-sign durations in Intl.DurationFormat
This is a normative change in the Intl.DurationFormat spec.

See: 89ab1855
2022-07-02 18:32:35 +03:00
MacDue
f743a8c00e LibGUI: Fix scrollbars not showing after updating content size
This fixes the scrollbars in not showing till after a resize in Browser
:^)
2022-07-01 23:58:08 +01:00
Idan Horowitz
b6b8356c0c LibJS: Implement Intl.DurationFormat.prototype.formatToParts 2022-07-01 01:00:05 +03:00
Idan Horowitz
706ff5ac83 LibJS: Implement Intl.DurationFormat.prototype.format 2022-07-01 01:00:05 +03:00
Idan Horowitz
b1fe6c3f68 LibJS: Implement the PartitionDurationFormatPattern abstract operation 2022-07-01 01:00:05 +03:00
Idan Horowitz
f4785e2468 LibUnicode: Generate data about DurationFormat-required units as well 2022-07-01 01:00:05 +03:00
Idan Horowitz
573061e76c LibUnicode: Extract the timeSeparator numeric symbol from CLDR
This will be used by Intl.DurationFormat
2022-07-01 01:00:05 +03:00
Idan Horowitz
8e55eb960e LibJS: Implement the ToDurationRecord abstract operation 2022-07-01 01:00:05 +03:00
Idan Horowitz
d9a4b3e46a LibJS: Implement Intl.DurationFormat.prototype.resolvedOptions 2022-07-01 01:00:05 +03:00
Idan Horowitz
b20ef7d640 LibJS: Implement Intl.DurationFormat.supportedLocalesOf 2022-07-01 01:00:05 +03:00
Idan Horowitz
97fe37bcc2 LibJS: Start implementing the stage 3 Intl.DurationFormat proposal 2022-07-01 01:00:05 +03:00
Linus Groh
e1ee33ba7c LibJS: Fix incorrect ErrorType in Temporal.PlainMonthDay constructor 2022-06-30 20:20:08 +01:00
MacDue
a999b82882 LibWeb: Fix background images not showing till scrolling/repaint
Previously, set_needs_display() was passed an empty rectangle in
ImageStyleValue::resource_did_load(). This led to the browser not
doing a repaint when the image loaded.

Fixes #14435
2022-06-30 20:11:40 +01:00
Luke Wilde
c153d1779e LibJS/Bytecode: End the for variable scope at the start of its end block
If the for loop's body is not block terminated, we will generate a Jump
to the end block which will block terminate the body. Then, we ended
the lexical variable scope if needed. However, since the body is now
block terminated, the "LeaveLexicalEnvironment" instruction that is
generated by end_variable_scope is now dropped on the floor.

This fixes this by moving it to the beginning of the end block.
2022-06-30 15:59:55 +01:00
Kenneth Myhra
fbe22af86e Everywhere: Use my fairly new and shiny serenityos.org email :^) 2022-06-30 15:59:42 +01:00
Luke Wilde
bc08d39754 LibJS/Bytecode: Make for, do/while and while always switch to end block
Previously we only did this if the body block was not terminated.
If it was, all future codegen would happen in this block terminated
body block until another switch occurred, dropping all generated
instructions in this time on the floor.
2022-06-30 18:35:18 +04:30
Andrew Kaster
a80493d221 LibC: Align _ctype_ to newlib's implementation
newlib has an extra character slot at the beginning to enable some
macro tricks that cause a warning when someone passes a type that's not
"int" into a ctype function. Our deviation from this causes issues for
LLVM.
2022-06-30 12:34:16 +01:00
Karol Kosek
9aafaec259 LibGfx: Use ZlibCompressor for compressing PNG files
Previously we were hand-writing all the Zlib and raw Deflated data
structures here, but now PNGs will be compressed using ZlibCompressor
which will actually try to compress something! :^)

Note that we don't do any filtering that should help compress data even
more, but even now the results are pretty good:

- screenshots of my Serenity desktop are take now about 55 KiB, where
  previously it was 3 MiB.
- re-encoding NASA photo of the Earth[1] to PNG shows a 2x improvement
  (34.3 MiB -> 16.5 MiB).

[1]: https://commons.wikimedia.org/wiki/File:The_Blue_Marble_(remastered).jpg
2022-06-30 12:26:49 +01:00
Karol Kosek
0de0de3536 LibCompress: Implement a Zlib compressor 2022-06-30 12:26:49 +01:00
Karol Kosek
42abe1df77 LibCompress: Use newly created Zlib header structure when decompressing
This way we can get rid of some magic numbers.
2022-06-30 12:26:49 +01:00
Karol Kosek
20575ea1f3 LibCompress: Add Zlib header structure 2022-06-30 12:26:49 +01:00
Linus Groh
26fc01eecb LibWeb/CSS: Fix incorrect calc(<percentage> - <value>) computations
When swapping both values to perform the actual calculation, we need to
consider that `A + B == B + A`, but `A - B != B - A`, so turn it into
`-B + A`.

Co-Authored-By: Sam Atkins <atkinssj@serenityos.org>
2022-06-30 12:11:57 +01:00
MacDue
5b9d7bb335 FileSystemAccessServer: Call window stealing functions sync
These functions were changed to synchronous in #13870 but
the async_ versions were still being called. This led to
frequent crashes when loading local files in Browser.
2022-06-30 11:15:24 +01:00
Tim Schumacher
6d4d6c3e2a LibC: Implement wcswidth 2022-06-30 11:57:49 +02:00
Tim Schumacher
9497cc6c97 LibC: Stub out brk and sbrk 2022-06-30 11:57:49 +02:00
Tim Schumacher
e2036ca2ca LibELF: Store the full file path in DynamicObject
Otherwise, our `dirname` call on the parent object will always be empty
when trying to resolve dependencies.
2022-06-30 11:57:10 +02:00
FrHun
fddd2bf6ff LibGUI: Add min_content_size debug property to AbstractScrollableWidget
This helps with debugging subclasses of AbstractScrollableWidget
2022-06-30 11:53:50 +02:00
FrHun
247e3ef6e7 LibGUI: Add custom layout change handling to ScrollableContainerWidget 2022-06-30 11:53:50 +02:00
FrHun
d0a418540e LibGUI: Fix flickering scrollbars in AbstractScrollableWidget
The new min_content_size value is to be set by the subclasses, it is
then used to determine if the scrollbars should be shown after a
resize, but before the content size will be calculated by the following
layout pass.
2022-06-30 11:53:50 +02:00
FrHun
6f9777d35b LibGUI: Add layout change propagation to Widget
This function is intended to propagate layout changes upwards in the
widget hierarchy. Widgets that can know what to do with this
information without causing a full layout invalidation (i.e. just
because one of their child widgets changed layout/size, doesn't
necessairily mean that they have to change their layout/size) can
override this and prevent a full relayout and redraw.
2022-06-30 11:53:50 +02:00
FrHun
f59c167bb0 Applications+Games+LibGUI: Fix layout problems 2022-06-30 11:51:25 +02:00
FrHun
39c8590720 LibGUI: Change Label standard preferred height to opportunistic grow
The default size for label is always a compromise, no matter what value
is chosen, some layouts will require local manual overrides.
Having the preferred size be opportunistic_grow in both directions seems
like it's currently the option that works without modification in most
cases.
2022-06-30 11:51:25 +02:00
MacDue
104642507a LibWeb: Fix box-shadows on elements smaller than the blur diameter
This commit adds some finagling and shrinking of the corner bitmap
to handle drawing shadows on elements where the shadow radius >
half the width or height of the element. Previously things would
go horribly wrong when this happend.

There could still be some edge cases, but things seem to be working
fairly well now.
2022-06-30 11:16:22 +02:00