Commit graph

34878 commits

Author SHA1 Message Date
Luke Wilde
a26f1b2ff9 LibWeb: Implement Range.compareBoundaryPoints 2022-02-26 12:53:32 +01:00
Luke Wilde
d73fb7e10f LibWeb: Implement Range.set{Start,End}{Before,After} 2022-02-26 12:53:32 +01:00
Luke Wilde
46ce50f74e LibWeb: Make Range.setStart and Range.setEnd spec compliant
These functions are way more involved than simply setting their
respective boundary points :^)
2022-02-26 12:53:32 +01:00
Luke Wilde
af3c866898 LibWeb: Make TreeNode::child_count return size_t instead of int
The primary benefit of this is that it's unsigned, as you can't have a
negative amount of children. Plus, all the users of child_count expect
it to be size_t.
2022-02-26 12:53:32 +01:00
Luke Wilde
3d44118595 LibWeb: Implement StaticRange 2022-02-26 12:53:32 +01:00
Luke Wilde
a2acda5669 LibWeb: Abstract Range's members into AbstractRange
Range's member variables are stored in AbstractRange as per the spec,
as they are also shared with StaticRange.
2022-02-26 12:53:32 +01:00
Luke Wilde
ed76b4238c LibWeb: Implement the legacy Audio factory function
This creates an Audio element with preload="auto" and the given src
attribute.

Required by Cookie Clicker.
2022-02-26 12:18:56 +01:00
Andreas Kling
79ea30bc96 LibWeb: Add HTMLTableSectionElement.rows and HTMLTableRowElement.cells
1% progression on ACID3. :^)
2022-02-26 12:18:39 +01:00
Andreas Kling
647576ec13 LibWeb: Fix LibWeb build with Clang
Clang doesn't like unused lambda captures.
2022-02-26 12:18:39 +01:00
Filiph Sandström
3c01ef1c23 Spreadsheet: Disable cut/copy if no cell is selected
This resolves #12766 which occurred when the user tried to
use either the cut or copy action before selecting a cell.
2022-02-26 10:36:27 +01:00
Andreas Kling
fe67fe3791 LibWeb: Check for valid names in Document.createElement() & friends
We now validate that the provided tag names are valid XML tag names,
and otherwise throw an "invalid character" DOM exception.

2% progression on ACID3. :^)
2022-02-26 10:03:07 +01:00
Andreas Kling
8daf603f46 LibWeb: Paint full bitmap font glyphs, even if there's overlap
Since we now honor the CSS font-size values when deciding line box
metrics, we sometimes find ourselves needing to paint text with a bitmap
font into a box that isn't large enough for the glyphs.

As it turns out, it looks a bit better if we just grow the paint rect to
fit the glyphs (instead of painting chopped-off glyphs.) So let's just
do that for now.
2022-02-26 09:32:52 +01:00
Andreas Kling
00146005bb LibWeb: Very basic support for CSS vertical-align: <length>
If vertical-align is a length value, we lift each line box fragment that
far from the baseline of the line box.

This is rather messy, and we'll have to improve factoring as we add
support for more alignment types.
2022-02-26 09:30:17 +01:00
Andreas Kling
c8892f64f5 LibWeb: Make InlineLevelIterator not enter into inline-block boxes
The purpose of "entering" a box is to collect box model metrics that
apply to content fragments within the box. However, inline-blocks are
special, in that their inner content does not directly participate in
the inline formatting context outside it.
2022-02-26 09:27:20 +01:00
Andreas Kling
3ca26c7a7a LibWeb: Fix InlineLevelIterator not exiting box model metric nodes
We were neglecting to pop nodes from the box model stack. The metrics
were already being zeroed out when used, but let's not grow the stack
needlessly.
2022-02-26 09:25:24 +01:00
Andreas Kling
797f51e122 LibWeb: Add border box top/bottom metrics to line box fragments
This will allow us to support more kinds of vertical alignment.
2022-02-26 09:24:40 +01:00
Andreas Kling
8b369bf7bd LibWeb: Remove unused LineBox::ends_with_forced_line_break() 2022-02-26 08:33:45 +01:00
Andreas Kling
784dbdef8e LibWeb: Make DOM inspector overlay rects a little nicer
Instead of just the outline, fill them with some semi-transparent color.
Also add tag name, ID, classes and coordinates to the little tooltip.
Finally, use the border box instead of the context box for metrics,
same as other browsers.
2022-02-26 08:25:46 +01:00
Andreas Kling
c59ab7cc8b LibWeb: Make StyleValue absolutization non-destructive
Instead of awkwardly visiting and mutating lengths inside StyleValues,
we now simply create a new StyleValue instead.

This fixes an issue where inherited relative lengths could get
absolutized using a parent as reference, and then not having the correct
values when used in a child context.
2022-02-26 01:35:25 +01:00
Andreas Kling
1cdbd377e7 LibWeb: Add vertical-align to ComputedValues 2022-02-26 01:35:06 +01:00
Andreas Kling
c9f4759329 LibWeb: Use CSS font-size when computing text fragment content height 2022-02-26 01:10:43 +01:00
Itamar
72ba072768 LibDesktop: Rename LaunchServerConnection=>ConnectionToLaunchServer
This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar
2f61d32f99 LibGUI: Rename ClipboardServerConnection=>ConnectionToClipboardServer
This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar
2bc8e32af0 LibGUI: Rename NotificationServerConnection
Rename NotificationServerConnection=>ConnectionToNotificationServer.

This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar
493f604dba SpiceAgent: Rename ClipboardServerConnection
Rename ClipboardServerConnection=>ConnectionToClipboardServer.

This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar
75ee77f8a1 HackStudio: Rename HackStudio::ServerConnection=>ConnectionToServer
Also renames ServerConnectionWrapper=>ConnectionToServerWrapper
and ServerConnectionInstances=>ConnectionToServerInstances

This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar
935d023967 Userland: Rename WindowServerConnection=>ConnectionToWindowServer
This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar
af132fdbd1 Userland: Rename WindowManagerServerConnection
Rename WindowManagerServerConnection=>ConnectionToWindowManagerServer.

This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar
d88da82e28 Userland: Rename IPC::ServerConnection=>IPC::ConnectionToServer
This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar
3a71748e5d Userland: Rename IPC ClientConnection => ConnectionFromClient
This was done with CLion's automatic rename feature and with:
find . -name ClientConnection.h
    | rename 's/ClientConnection\.h/ConnectionFromClient.h/'

find . -name ClientConnection.cpp
    | rename 's/ClientConnection\.cpp/ConnectionFromClient.cpp/'
2022-02-25 22:35:12 +01:00
Andreas Kling
efac862570 LibWeb: Parse <style> element text content when inserted into document
1% progression on ACID3. :^)
2022-02-25 22:05:42 +01:00
Andreas Kling
fb11741f20 LibWeb: Use the prefix passed to Document.createElementNS()
1% progression on ACID3. :^)
2022-02-25 21:29:12 +01:00
Andreas Kling
fa17776a51 LibWeb: Support HTMLFormElement.elements and HTMLFormElement.length
Note that we implement .elements as a HTMLCollection for now, instead of
the correct HTMLFormControlsCollection subclass. This covers most
use-cases already.

1% progression on ACID3. :^)
2022-02-25 21:19:06 +01:00
Andreas Kling
fbee0490a3 LibWeb: Improve HTMLElement.click()
This API now follows the spec a bit more closely, with regards to the
event being dispatched. There are still FIXME's but this is already an
improvement.

2% progression on ACID3. :^)
2022-02-25 20:45:19 +01:00
Andreas Kling
c25d653c31 LibWeb: Implement Range.commonAncestorContainer 2022-02-25 20:45:03 +01:00
Andreas Kling
aec0e54f73 LibWeb: Expose Range.collapsed to JavaScript 2022-02-25 20:20:31 +01:00
Andreas Kling
f2663f477f AK: Ignore whitespace while decoding base64
This matches how other implementations behave.

1% progression on ACID3. :^)
2022-02-25 19:54:13 +01:00
Andreas Kling
17f34488f6 LibWeb: Implement HTMLImageElement.width and HTMLImageElement.height 2022-02-25 19:38:31 +01:00
Andreas Kling
b023308f5c LibWeb: Notify parent when DOM::CharacterData content changes
This makes <style> elements reparse the CSS when their text child is
programmatically changed.
2022-02-25 19:38:31 +01:00
Andreas Kling
d0ab546d7a LibWeb: Implement UIEvent.initUIEvent()
1% progression on ACID3. :^)
2022-02-25 19:38:31 +01:00
Andreas Kling
093e66afc0 LibWeb: Make document.createEvent("UIEvent") actually create a UIEvent
There were two things preventing this from working right:

- UIEvents::UIEvent::create() was actually just DOM::Event::create()
- We didn't return the right JavaScript wrapper type for UIEvent
2022-02-25 19:38:31 +01:00
Andreas Kling
31508b2788 LibWeb: Make CSS :empty selector match empty text nodes as well
Previously we were only matching elements with *no* text children.
With this patch, we now also allow any number of empty text children to
be present as well.

1% progression on ACID3. :^)
2022-02-25 19:38:31 +01:00
Andreas Kling
29144f9238 LibWeb: Allow all ASCII whitespace chars between element class names
1% progression on ACID3. :^)
2022-02-25 19:38:31 +01:00
Andreas Kling
dd7eb3d6d8 AK: Add String::split_view(Function<bool(char)>)
This allows you to split around a custom separator, and enables
expressive code like this:

    string.split_view(is_ascii_space);
2022-02-25 19:38:31 +01:00
Andreas Kling
7ed6549c8b LibWeb: Fix off-by-one in calculation of available space for line boxes
The rightmost edge of the available space ends exactly at the leftmost
right-side floating box, not one pixel away from it.
2022-02-25 19:38:31 +01:00
Andreas Kling
a5c2ab69ec LibWeb: Look for nearest available size when using bitmap fonts
Use the new Gfx::Font::AllowInexactSizeMatch parameter when doing CSS
font lookups. This fixes a long-standing issue where text with e.g text
with "font-size:12px" would be larger than "font-size:13px" since there
was an exact match for 12, but none for 13 (so we'd fall back to 10).
2022-02-25 19:38:31 +01:00
Andreas Kling
4dd9e2df78 LibGfx: Add Font::AllowInexactSizeMatch parameter to font lookup
This allows bitmap font lookup to return the best matching size instead
of failing completely. The previous behavior (exact matches only)
remains the default.
2022-02-25 19:38:31 +01:00
Andreas Kling
95715f0c8f LibWeb: Fix rounding errors in calculation of final line box width
Instead of re-measuring the distance between the left and right edges of
a line box, we now simply adjust the final width based on how much the
rightmost fragment moved during the alignment process.
2022-02-25 19:38:31 +01:00
thankyouverycool
f457e43885 Assistant+CommandPalette: Use FrameShape::Window for main widgets 2022-02-25 19:38:23 +01:00
thankyouverycool
e1a72c6df8 Taskbar: Update ClockWidget FrameShape and adjust dimensions
Uses the new Window FrameShape. Fixes some erroneously elided text
and incorrect calendar window placement.
2022-02-25 19:38:23 +01:00