Age | Commit message (Collapse) | Author |
|
This program's purpose is now achieved with headless-browser, which has
the added benefit of being runnable outside of Serenity.
|
|
Feels a bit more natural, at least to align with muscle memory from
other browsers.
|
|
The `view_frame_action` variable only exists for the duration of
`initialize_menubar()`, so calling it in `m_preview_window->on_close`
would crash. This fixes that by storing the action pointer inside
MainWidget. (And storing the `view_window_action` too because it felt
weird storing one and not the other.)
|
|
While inline content between floating elements was broken correctly,
text justification was still using the original amount of available
space (without accounting for floats) when justifying fragments.
|
|
This code now works in terms of *intrusion* by left and right side
floats into a given box whose insides we're trying to layout.
Previously, it worked in terms of space occupied by floats in the root
box of the BFC they participated in. That created a bunch of edge cases
since the code asking about the information wasn't operating in root
coordinate space, but in the coordinate space of some arbitrarily nested
block descendant of the root.
This finally allows horizontal margins in the containing block chain to
affect floats and nested content correctly, and it also allows us to
remove a bogus workaround in InlineFormattingContext.
|
|
This seems mostly harmless and matches what CSS expects from us at the
moment. Eventually our CSS font selection will become more sophisticated
and stop relying on Gfx::FontDatabase for things like this, but for now
it's a simple stopgap that lets websites do "font-family: arial" :^)
|
|
Use inner height since the paintable adds padding back.
Fixes #18842.
|
|
Previously, the File Picker didn't activate the pre-selected filter.
|
|
Font Editor and Theme Editor already open the dialog in system folders
(/res/fonts and /res/themes). To be fair, they do have a special folder
just for their files, but I think this is good enough if you want to
start hacking an app :^)
Additionaly, this also adds a filter to show only .gml files by default.
|
|
|
|
Previously it was always "Untitled".
|
|
|
|
Closing the main window didn't close the preview window along with it.
|
|
|
|
|
|
|
|
We weren't setting the path on the 'Open' action, which meant that a
startup file name was always visible in the title bar (unless we save a
file to a different path, or pick a file from the 'recent files' list).
By setting it to update the stored file path in the load_file()
function, it'll be guaranteed the file name will always be set.
This also will add the startup opened file to the recently opened files
list.
|
|
|
|
Quiet mode suppresses all output except the statistics shown before
the program exits.
|
|
|
|
Previously we did some of the filtering before the loop, and some inside
it, which made things awkward to reason about. This also lets us avoid
generating a TTY string for each process unless there's a column for it.
|
|
|
|
Several differences here:
- Passing `-q` multiple times will add them together, instead of the
last one overwriting the previous ones.
- `-q` PIDs can be separated by commas as well as spaces.
- We check that the PIDs are integers while parsing the arguments,
instead of later on.
The "parse a list of things as an option" is extracted into a helper
function, because we're going to want the same logic for `-g`, `-G`,
`-p`, `-t`, `-u`, and `-U`.
|
|
|
|
This is identical to our existing `-e` option, but both are required by
POSIX.
|
|
|
|
Also use unchecked_append() in a couple of other places where we can.
|
|
|
|
|
|
This is useful for commands which expect a comma-separated list of
pids.
|
|
This includes actions such as controlling play state, downloading the
video, and opening the video in a new tab.
|
|
This allows for the browser process to control the play/pause state,
whether we paint user agent controls on the video, and whether the video
loops when it finishes playing.
|
|
This just sets up the IPC to notify the browser process of context menu
requests on video elements. The IPC contains a few pieces of information
about the state of the video element.
|
|
Otherwise, returning "no" here will disallow the browser process from
showing a context menu, as the event handler will bail early.
|
|
This enables, for example, navigating to a file:// URL in Ladybird with
a .webm file extension.
|
|
|
|
|
|
|
|
|
|
item_incurred_increase should be reset before every next distirbution
because otherwise it will accumulate increases from previous
distributions which is not supposed to happen.
|
|
Note that this simple form of text-indent only affects the first line
of formatted content in each block.
Percentages are resolved against the width of the block.
|
|
Changed here:
https://github.com/whatwg/fetch/commit/018ac19838ade92324a1900113636a8bf98f3a1b
|
|
There is not need to run layout inside grid items for intrinsic sizing
of grid container.
|
|
specified_size_suggestion() should use width or height depending on
specified dimension.
|
|
Fixes the issue when if there are enough rows/column to force
m_row_gap_tracks or m_column_gap_tracks be resized during gaps
initialization then pointers stored in m_grid_columns_and_gaps or
m_grid_rows_and_gaps become invalid.
|
|
Make a separate rect for the text and use IntRect::centered_within()
to sidestep any subpixel jitter. This way it looks good with both bitmap
and vector fonts.
|
|
Instead of recomputing the state whenever someone asks for it, we now
cache it when the attribute is added/changed/removed.
Before this change, HTMLElement::is_editable() was 6.5% of CPU time
when furiously resizing Hacker News. After, it's less than 0.5%. :^)
|
|
After finishing layout, iframe layout boxes (FrameBox) get notified
about their new size by LayoutState::commit(). This information is
forwarded to the nested browsing context, where it can be used for
layout of the nested document.
The problem here was that we notified the FrameBox twice. Once when
assigning the used offset to its paintable, and once when assigning its
size. Because the offset was assigned first, we ended up telling the
FrameBox "btw, your size is 0x0". This caused us to throw away all
the layout information we had for the nested document.
We'd then say "actually, your size is 300x200" (or something) but by
then it was already too late, and we had to do a full relayout.
This caused iframes to flicker as every time their containing document
was laid out, we'd nuke the iframe layout and redo it (on a zero timer).
The fix is pleasantly simple: we didn't need to inform the nested
document of its offset in the containing document's layout anyway. Only
its size is relevant. So we can simply remove the first call, which
removes the bogus 0x0 temporary size.
Note that iframes may still flicker if they change size in the
containing document. That's a separate issue that will require more
finesse to solve. However, this fixes a very noticeable common case.
|
|
Previously it was possible for a window to register as a parentless
blocking modal then add itself to a stealable parent's modal chain,
bypassing a mode misbehavior check in create_window()
Also relaxes reciprocity for blockers with the same parent. This
scenario is usually created by simultaneous MessageBoxes. It's not
an ideal UX to cascade these, but there's no need to crash over it.
|
|
Many actions affect Window modality, so let's put a temporary change
governor on activation to stop race conditions.
Fixes being able to spam open/close shortcuts and spawn multiple
FilePickers, among other things.
|