1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 18:35:09 +00:00
Commit graph

10903 commits

Author SHA1 Message Date
Andreas Kling
967b257518 LibWeb: Make FFC prepare replaced child boxes for layout
Before we ask a replaced box about its intrinsic dimensions, we have
to "prepare" the box, which tells it to go and work out what its
intrinsic dimensions are.

I've added a FIXME about how this is silly (and clearly bug-prone)
but this patch only patches it locally in FFC for now.
2022-06-21 20:40:26 +02:00
Andreas Kling
85f2f8ab3f LibWeb: Make sure we layout absolutely positioned children of FFC 2022-06-21 20:17:28 +02:00
Kenneth Myhra
c805987329 LibWeb: Add timeout functionality to ResourceLoader
Add timeout functionality to ResourceLoader and use it from
XMLHttpRequest.
2022-06-21 10:29:14 +01:00
Kenneth Myhra
8b42c05648 LibWeb: Add XMLHttpRequest::timeout setter and getter 2022-06-21 10:29:14 +01:00
Mike Akers
27f93a3052 LibGUI: Prevent CenterWithinParent Dialogs from appearing offscreen
When a dialog is created the position is checked against the Desktop's
rect and repositioned to be entirely visible. If the dialog is larger
than the desktop's rect it is just centered.
2022-06-20 16:50:25 +01:00
Karol Kosek
c6eaa39b99 LibWeb: Make doubleclicking select the nearest word 2022-06-20 12:55:50 +01:00
Karol Kosek
237a5bedd2 LibWeb: Dispatch dblclick UI Events on double click 2022-06-20 12:55:50 +01:00
Karol Kosek
03cda8a013 LibWeb+LibWebView+WebContent: Get doubleclick events from LibGUI 2022-06-20 12:55:50 +01:00
Karol Kosek
0e04532623 LibWeb: Add stub implementation for handling doubleclicks 2022-06-20 12:55:50 +01:00
FrHun
565f68f8bb LibGUI: Reimplement Painter::draw_triangle to be more symmetrical
This is a reimplementation of draw_triangle that manages without
floating point arithmetic.
It's most important property, compared to the previous implementation is
that rotating the same triangle 90 degrees won't drastically change the
appearance of that triangle. (it did before)
2022-06-20 12:40:51 +01:00
FrHun
586a94818d LibGUI: Draw ScrollBar arrows with draw_triangle
This doesn't actually change anything in appearance, but it lays the
groundwork to have these graphics scaling compatible once the window
backstores support that.
2022-06-20 12:40:51 +01:00
FrHun
325042f2b7 AK: Make Point constructors constexpr 2022-06-20 12:40:51 +01:00
FrHun
b3d1fa4c54 LibGUI: Add drawing triangle from coordinate list 2022-06-20 12:40:51 +01:00
Luke Wilde
0a989d1bfd LibWeb: Implement HTMLBaseElement.href 2022-06-19 16:35:43 +01:00
Luke Wilde
1f820f8840 LibWeb: Add support for the <base> element changing the base URL
Used by Google seemingly almost all around account sign in and
management. The modern sign in page has this near the beginning:
```html
<base href="https://accounts.google.com">
```
All of the XHRs performed by sign in are relative URLs to this
base URL. Previously we ignored this and did it relative to the
current URL, causing the XHRs to 404 and sign in to fall apart.

I presume they do this because you can access the sign in page
from multiple endpoints, such as `/ServiceLogin` and
`/o/oauth2/auth/identifier`
2022-06-19 16:35:43 +01:00
Andrew Kaster
6eb9ebec5f LibC: Stop leaking FILE* from use of getgrnam and getgrgid 2022-06-19 09:05:35 +02:00
Luke Wilde
bae330d559 LibWeb: Rename Event.srcTarget to Event.srcElement
It's called srcElement instead of srcTarget.
Required by w3school's search focus handler.
2022-06-18 16:13:03 +01:00
SeekingBlues
f34e69a52b LibC: Add ctermid
We simply return "/dev/tty", since it always refers to the controlling
terminal of the calling process.
2022-06-18 15:10:13 +02:00
Linus Groh
5b1e2cc65c LibJS: Update AdjustRoundedDurationDays function signature comment
I missed this in a25c5d8. Thanks to Idan for noticing :^)
2022-06-18 13:58:08 +01:00
Linus Groh
7a8e6cf6c6 LibJS: Move MergeLists into non-Temporal ECMA-262 amendments
This is an editorial change in the Temporal spec.

See: 4ce3db1
2022-06-18 13:54:46 +01:00
Linus Groh
0c3d2b656e LibJS: Rename CalendarMergeFieldNames to MergeLists
This is an editorial change in the Temporal spec.

See: bebf467
2022-06-18 13:54:46 +01:00
Linus Groh
e685896403 LibJS: Check value is an Object before checking for internal slots
This is an editorial change in the Temporal spec.

See: d96e662
2022-06-18 13:54:46 +01:00
Linus Groh
a25c5d8fe8 LibJS: Make relativeTo required for AdjustRoundedDurationDays
This is an editorial change in the Temporal spec.

See: 48e0a15
2022-06-18 13:54:46 +01:00
MacDue
9ed5b2dfb5 LibGfx: Move AntiAliasingPainter.cpp into Gfx namespace 2022-06-18 02:34:56 +01:00
MacDue
e4cca7886e LibWeb: Use the AA painter for drawing dotted lines
The AA painter will actually draw the dots as circles, which is
how other browsers handle this.
2022-06-18 02:34:56 +01:00
MacDue
6139fc5c87 LibGfx: Add AA dotted horizontal/vertical lines
This adds simple dotted lines (horizontal/vertical only for now).

There's a little number fudging added in to make sure the final
dot is always drawn at the endpoint (for lines with at least a
handful of dots).
2022-06-18 02:34:56 +01:00
kleines Filmröllchen
96180fc2d9 LibC: Add printf and scanf format macros for "fast" and "least" types
As usual, we just define these based on the given integer size itself.
2022-06-17 21:53:28 +01:00
Linus Groh
d9fc09c6e5 LibJS/Tests: Remove outdated FIXME 2022-06-17 21:06:01 +01:00
networkException
ccb31b347e LibGfx: Rename DO_PATH macro to ENCODE_PATH to match ThemeEditor 2022-06-17 19:46:30 +01:00
networkException
c76c3e38e6 LibGUI: Support setting an in memory theme in AbstractThemePreview 2022-06-17 19:46:30 +01:00
networkException
82f537b847 LibGUI: Actually update the selection in ComboBox::set_selected_index
Previously we would not set m_selected_index or the editor's text value
when calling set_selected_index.
2022-06-17 19:46:30 +01:00
networkException
535e1c9152 LibGUI: Add on_theme_change callback to Application
This allows an Application without a window to listen for theme changes.
2022-06-17 19:46:30 +01:00
networkException
84780f3ed5 LibGUI: Add clear_selection helper for ComboBox
This patch adds a helper to ComboBox allowing it to clear the current
selection and show a blank editor.
2022-06-17 19:46:30 +01:00
Tim Schumacher
2a45d30302 LibC: Allow parsing numbers right on the cutoff 2022-06-17 11:24:27 +01:00
SeekingBlues
cba4750921 LibC: Add POSIX spec links to wait, waitpid and waitid 2022-06-17 10:59:26 +02:00
SeekingBlues
4796a25bbd LibC: Make waitpid's return value more POSIX-compliant
* Always return 0 if `WNOHANG` is specified and no waitable child is
  found, even if `wstatus` is null.
* Do not return 0 if the child is continued. Treat it the same way as
  all the other states.

Refer to the RETURN VALUE section of the POSIX spec:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html
2022-06-17 10:59:26 +02:00
SeekingBlues
8730e56e88 LibC: Add WIFCONTINUED macro
Like other systems, we can encode the continued state with 0xffff in the
status value. This is needed for some ports.
2022-06-17 10:59:26 +02:00
FrHun
5a73bf1553 LibGUI: End Scrollbar gutter tinting when target is reached
Before, when holding at a location in the gutter until the scrubber
reached that location, the gutter would stay tinted, even after the
target was reached, and the scrubber didn't move any more; only
stopping when the pointer was moved.
2022-06-17 09:58:10 +01:00
FrHun
2f388065c8 LibGUI: Fix crash on Scrollbar shift click and re enable jumping
Previously clicking in the gutter of an activated scrollbar while
holding shift would crash on the removed VERIFY.
2022-06-17 09:58:10 +01:00
MacDue
c9a70ffff5 LibWeb: Fix 'background-repeat: round' calculation
Previously, this was slightly off and not doing what the spec comment
above asked for. This led to really small values for x_step and
y_step, making the `backgrounds.html' example use crazy amounts of
CPU whist painting.
2022-06-17 09:37:39 +01:00
MacDue
c491ab7523 LibWeb: Only paint the background image on integer steps
This avoids excessive over painting.
2022-06-17 09:37:39 +01:00
Sam Atkins
c4ef4fcd72 LibWeb: Add deprecated image-rendering values
From the spec:

> This property previously accepted the values optimizeSpeed and
  optimizeQuality. These are now deprecated; a user agent must accept
  them as valid values but must treat them as having the same behavior
  as pixelated and smooth respectively, and authors must not use them.

- https://www.w3.org/TR/css-images-3/#the-image-rendering
2022-06-16 17:36:13 +01:00
FrHun
1b4ab8626b LibWeb: Disable unused error on temporarily unused variable from spec 2022-06-16 17:20:49 +01:00
Karol Kosek
ab6288fd3d LibWeb: Use SmoothPixels scaling mode as the pixelated rendering
It's probably not in 1:1 as spec says, as it wants us to first upscale
the image to the nearest integer and then downscale it bilinearly.
But this mode still falls into the general description of the value:

> The image is scaled in a way that preserves the pixelated nature of
> the original as much as possible, but allows minor smoothing instead
> of awkward distortion when necessary.

Also, this way we don't have to allocate the memory just for the integer
scale. :^) :^)
2022-06-16 14:26:55 +01:00
Karol Kosek
3d7838c5fb LibGfx: Implement SmoothPixels scaling mode
If you wanted to upscale an image, you had two options:
- use Nearest Neighbor: it's probably a good choice. The image stays
  sharp.. unless you aren't using integer scales.
- use Bilinear blending, but this on the other hand, doesn't handle
  upscaling well. It just blurs everything.

But what if we could take the best of both of them and make the image
sharp on integers and just blur it a little when needed?

Well, there's Smooth Pixels!

This mode is similar to the Bilinear Blend, with the main difference
is that the blend ratio is multiplied by the current scale, so the blur
on corners can be only 1px wide.

From my testing this mode doesn't handles downscaling as good as the
Bilinear blending though.
2022-06-16 14:26:55 +01:00
Karol Kosek
c409881b5f LibGfx: Pass scaling mode as an enum in do_draw_scaled_bitmap 2022-06-16 14:26:55 +01:00
MacDue
4d110c39f3 LibWeb: Support using border-radius on <img> tags 2022-06-16 10:28:07 +01:00
MacDue
5b6abfadfd LibWeb: Make PaintableBox::normalized_border_radii_data() protected
This method is needed in subclasses of PaintableBox to do
border-radius clipping.
2022-06-16 10:28:07 +01:00
MacDue
4e8e1492f9 LibWeb: Support using border-radius with a background-image 2022-06-16 10:28:07 +01:00
MacDue
830632407f LibWeb: Add BorderRadiusCornerClipper
This is a helper class for clipping the corners off a element.

This works in a similar way to how (outline) borders are painted.

The steps are:
  1. A small bitmap that fits only the corners is allocated
  2. The corners are painted into the bitmap
  3. The existing pixels (where the corners will be painted)
     are copied using the (inverse) corner bitmap as a mask
     (done before the element is painted)
  4. The element is painted
  5. The areas outside the corner radii are restored

Like with the borders, this only requires allocation on the first
paint.
2022-06-16 10:28:07 +01:00