1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 03:58:12 +00:00
Commit graph

943 commits

Author SHA1 Message Date
Timothy Flynn
44602ae141 LibWeb: Create a new BFC when the overflow is neither visible nor clip
From MDN, a block overflow context should be created for "Block elements
where overflow has a value other than visible and clip."
2021-03-30 22:21:46 +02:00
Timothy Flynn
c21eafbf38 LibWeb: Compute position of relative blocks before placing them
Turns out compute_position should be invoked before placing the element
in normal flow. Otherwise, the position isn't set on the first layout.
The effect was that the block would "jump" into place on a secondary
layout.

This is a follow-up to commit:
deda7c8995
2021-03-30 22:21:46 +02:00
Timothy Flynn
5b617df496 LibWeb+WebContent: Support displaying tooltips in OOPWV 2021-03-30 21:21:17 +02:00
Timothy Flynn
c503047c71 LibWeb: Get the first DOM node with a 'title' attribute for tooltip area
Rather than expecting the first parent to have a 'title' attribute,
search all ancestors.
2021-03-30 21:21:17 +02:00
Andreas Kling
077406dc36 LibJS: Fix two issues with array (length > INT32_MAX)
1. Allow Value(size_t) and use it for array length properties.

If an array length can't fit in an Int32 value, we shouldn't go out of
or way to force it into one. Instead, for values above INT32_MAX,
we simply store them as Double values.

2. Switch to generic indexed property storage for large arrays.

Previously we would always allocate array storage eagerly when the
length property was set. This meant that "a.length = 0x80000000" would
trivially DOS the engine on 32-bit since we don't have that much VM.

We now switch to generic storage when changing the length moves us over
the 4M entry mark.

Fixes #5986.
2021-03-30 13:52:56 +02:00
one-some
279599cbed EditingEngine: Don't jump to the beginning or end of a non-existant word
Previously, when jumping to the next word on the last column of a line,
or when jumping to the previous word on the first column, it would
crash. This checks if that is the case, and if so, will do nothing.
2021-03-30 11:32:59 +02:00
Idan Horowitz
77601e09c8 FontEditor+TextEditor+Playground: Refuse to load device files
This prevents the undefined behaviour that would come up as a result of
doing so. (For example: opening "infinite" devices like /dev/full will
result in an infinite loop until exhaustion of memory)
2021-03-30 11:29:52 +02:00
Idan Horowitz
aff774c8ac LibCore: Add Core::File is_device() helpers
The helpers check if the file is a block device or a character device
via stat and fstat.
2021-03-30 11:29:52 +02:00
thankyouverycool
4465b37897 LibGUI+Calendar: Add new month and year views to Calendar
And overhaul resize and paint events to fix layout edge cases in
which Calendar wasn't filling its parent widget completely. Ensures
month views always display prior month days for click navigation.
Converts Calendar app layout to GML.
2021-03-30 10:34:34 +02:00
thankyouverycool
fec9c8034d LibGUI: Don't inflate icon text rects beyond available width
Fixes wrapped text candidates not first eliding
2021-03-30 10:33:08 +02:00
Timothy Flynn
855920fe13 Browser+LibWeb+WebContent: Add action to clear resource cache 2021-03-30 10:27:49 +02:00
Andreas Kling
50a8e0e495 LibGUI+WindowServer: Keep canonical WindowType enum in WindowServer
Having the same enum in two places was annoying. Let's just "using"
the WindowServer::WindowType enum into the GUI namespace.
2021-03-29 22:39:18 +02:00
Jelle Raaijmakers
3c390d65e4 LibC: Implement utimes function 2021-03-29 19:58:12 +02:00
Idan Horowitz
eab151c994 LibElf+readelf: Parse ELFs with no program headers correctly
This simply fixes a check which assumed the program header count was
always non zero.
2021-03-29 19:57:19 +02:00
Itamar
9eaa6527f7 LibC: Mark atexit() entries as 'called' before calling them
This guards as from recursing into an atexit callback if exit() is called
from within it.
2021-03-29 19:56:54 +02:00
Timothy Flynn
deda7c8995 LibWeb: Compute position of relative block elements
Section 10.3 "Calculating widths and margins" indicates that the 'left'
and 'right' properties of relatively positioned elements should be set
in accordance with the rules of section 9.4.3.
2021-03-29 19:56:23 +02:00
Timothy Flynn
b88de8a91f LibGUI: Add transient option to show dotfiles in FilePicker
This is particularly useful when wanting to open files in ~/.config
from the Text Editor. The option is currently not persistent, but could
be hooked into File Manager's configuration.
2021-03-29 19:36:38 +02:00
Itamar
f6cc382403 TextEditor: Adjust AutoCompleteBox's position to the scroll height 2021-03-29 18:05:46 +02:00
Edgar Araújo
532e0090fc LibGUI: Enable the use of font properties through GML
You can now specify the font, font_size, font_weight
and font_type (fixed_width/normal) through GML
2021-03-29 09:10:23 +02:00
Edgar Araújo
e23b9907e7 LibGUI: Remove the necessity to have empty {} on GML objects
This simplifies GML syntax when the object doesn't have
any childs or properties
2021-03-29 09:10:23 +02:00
Tom
ee3ac88c2d LibGUI: Fix IconView selection with FlowDirection::TopToBottom
While iterating the items contained by the rubberband we need to skip
the correct number of items either vertically or horizontally, depending
on which direction the items flow.

Fixes #5993
2021-03-29 09:07:25 +02:00
Idan Horowitz
9f656b6fa9 LibCoreDump+CrashDaemon: Compress coredumps
Most coredumps contain large amounts of consecutive null bytes and as
such are a prime candidate for compression.

This commit makes CrashDaemon compress files once the kernel finishes
emitting them, as well as adds the functionality needed in LibCoreDump
to then parse them.
2021-03-28 20:42:33 +02:00
Tom
7269e0f751 LibCore: Add Timer::create_repeating convenience method 2021-03-28 20:42:21 +02:00
Luke
c3d4fbb2a5 LibGfx: Use zlib instead of just deflate when loading PNGs
PNGs use deflate with zlib, however we were just skipping the zlib
bytes and then piping it into deflate decompressor. Since we have a
zlib decompressor, lets use that instead.

This has the added benefit of extra error checking.
2021-03-28 20:40:44 +02:00
Linus Groh
8c99968ec1 LibJS: Fix m_allocations_since_last_gc initialization value 2021-03-28 20:40:22 +02:00
Andreas Kling
fdd01a0a07 LibC: Implement asprintf() and vasprintf()
These simply use StringBuilder::appendvf() internally which is not
optimal in terms of heap allocations, but simple enough and I don't
think they are performance sensitive functions anyway.
2021-03-28 18:39:32 +02:00
Andreas Kling
5f71bf0cc7 Kernel+LibC: Implement sys$ioctl() FIONBIO
This is another (older) way of making a file descriptor non-blocking.
2021-03-28 17:50:08 +02:00
AnotherTest
bbf6847d50 LibGUI: Register GUI::StackWidget with GML 2021-03-28 11:46:47 +02:00
Andreas Kling
247717431d LibGUI: Make GUI::Widget::event() protected 2021-03-28 11:25:40 +02:00
Andreas Kling
d0072aef8b LibCore: Make Core::Object::event() protected 2021-03-28 11:24:22 +02:00
Andreas Kling
54c7110d9d LibCore: Add a way to install an event filter on a Core::Object
The event filter is consulted by Object::dispatch_event() and may
decide that the event should not be delivered to the target object.
2021-03-28 11:19:18 +02:00
Andreas Kling
c91bb72964 LibC: Add vfork() as a simple wrapper around fork()
I don't know if we should implement optimized vfork(). I'm adding it
here since SDL2 uses it.
2021-03-28 00:05:29 +01:00
Idan Horowitz
1ac661515e LibArchive: Bounds check header offsets in Zip Parser
Since the central directory offset in the end of central directory
record and the local file offset in each central directory header
are user-controlled arbitary data, we have to bounds check them
before using them.
2021-03-27 19:44:16 +01:00
Linus Groh
e8aa998cdc LibGUI: Return symlink fallback icon if target icon cannot be determined
This is the case for symlinks that point to themselves, for example -
previously the returned icon would be empty.

Fixes #5978.
Fixes #5979.
2021-03-27 19:43:36 +01:00
Jelle Raaijmakers
2fb3c98429 LibC: Define F_GETLK 2021-03-27 19:43:14 +01:00
Andreas Kling
5bd8a416ea LibC: Add AF_INET6, PF_INET6 and IPPROTO_IPV6 macros 2021-03-27 18:58:38 +01:00
Andreas Kling
67f89fdc87 LibC: Add POSIX macros for the ai_flags field in struct addrinfo 2021-03-27 18:57:30 +01:00
Andreas Kling
6d99345811 LibC: Add S_I{READ,WRITE,EXEC} macro aliases for BSD compatibility
These map as follows:

S_IREAD -> S_IRUSR
S_IWRITE -> S_IWUSR
S_IEXEC -> S_IXUSR
2021-03-27 18:00:41 +01:00
Idan Horowitz
4317db7498 LibArchive: Make bounds checks stricter in the Zip parser
We now also check we have enough space in the incoming buffer for the
various signatures and optional (length specified) fields. This helps
prevents a possible heap overflow read.
2021-03-27 16:28:48 +01:00
Cesar Torres
0d5e1e9df1 Everywhere: rename 'Sample' type to 'Frame'
Because it's what it really is. A frame is composed of 1 or more samples, in
the case of SerenityOS 2 (stereo). This will make it less confusing for
future mantainability.
2021-03-27 10:20:55 +01:00
Linus Groh
0b799dd3b7 LibJS: VERIFY(!this_value.is_empty()) in VM::call_internal()
Just a sanity check, this must never happen. Manual invocations of
call() e.g. in LibWeb bindings must pass js_undefined() if no specific
this value is desired, which OrdinaryCallBindThis will then use as-is or
turn into the global this value in non-strict mode.
2021-03-26 22:59:47 +01:00
Linus Groh
056ffa4abb LibWeb: Call requestAnimationFrame() callback with undefined this value
We were leaking an empty value via the callback's this value:

    requestAnimationFrame(function () {
        this; // <-- empty value
    });
2021-03-26 22:59:47 +01:00
Federico Guerinoni
49a062f81d LibGUI: Show human readable size in filemanager
The size is visible only in TableView mode of the filemanager.
2021-03-26 22:59:09 +01:00
Linus Groh
8fe7983cc5 LibMarkdown: Remove unused Paragraph::add_line() declaration 2021-03-26 22:58:36 +01:00
Timothy Flynn
990e362a17 LibGUI: Allow assigning a value to a specific index in JsonArrayModel 2021-03-26 22:58:31 +01:00
Timothy Flynn
74e9a892e3 LibWeb: Compute height of absolutely positioned blocks when possible
Section 10.6.4 rule 5 of the CSS height property spec outlines a method
to compute the height of an absolutely positioned block when the 'top'
and 'bottom' CSS properties are specified.
2021-03-26 22:58:13 +01:00
Timothy Flynn
03990fcb89 LibWeb: Consider floating children when computing auto-height
The case for computing auto-height of block elements which have block-
level children was erroneously skipping some children:

1. If the block element itself is absolute or floating, all children
   were skipped due to a likely typo ("box" vs. "child_box" inside the
   for-each loop).

2. Floating children should only be skipped if the block element's
   'overflow' property computes to 'visible', per section 10.6.3 of the
   CSS height property spec. If the property computes to another value,
   section 10.6.7 only indicates that absolutely positioned children
   should be skipped.
2021-03-26 22:58:13 +01:00
Timothy Flynn
557927f25b LibWeb+WebContent: Support displaying favicons in OOPWV
In single process mode, the browser will display a page's favicon in
both the location bar and tab. This adds the same support for multi-
process mode.
2021-03-26 16:55:51 +01:00
Andreas Kling
4b6fba1e4c WindowServer+LibGfx: Make menubar menus slightly larger
Also make sure the left/right padding is equally large.
2021-03-26 14:25:37 +01:00
Andreas Kling
e9db10e3a9 WindowServer+LibGUI: Remove the global menubar :^)
This leaves menu applets running but invisible, and that's a regression
we need to take care of obviously. But not today, because it's getting
too late.
2021-03-25 23:27:11 +01:00