summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-03-18LibWeb: Implement `:nth-[last-]child(n of foo)` syntaxSam Atkins
In Selectors level 4, `:nth-child()` and `:nth-last-child()` can both optionally take a selector-list argument. This selector-list acts as a filter, so that only elements matching the list are counted. For example, this means that the following are equivalent: ```css :nth-child(2n+1 of p) {} p:nth-of-type(2n+1) {} ```
2022-03-18Base: Add `of foo` tests to nth-child and nth-last-child test pagesSam Atkins
Also split the selector-list up for easier debugging.
2022-03-18LibWeb: Calculate specificity for special pseudo-classesSam Atkins
This fixes the specificity for :not(), :is() and :where(). Also, we now clamp the specificity numbers instead of letting them overflow, and I sprinkled in some spec comments for good measure.
2022-03-18LibWeb: Implement the :where() selectorSam Atkins
This is identical to :is() except for specificity, so we can use the same code paths. :^)
2022-03-18Base: Add a test page for the CSS :where() selectorSam Atkins
This behaves identically to :is() except for specificity, so this test page is identical to the other one. It's not because I'm lazy. :^)
2022-03-18LibWeb: Implement the :is() selectorSam Atkins
This lets us finally get rid of a FIXME in the default style sheet. :^)
2022-03-18Base: Add nested lists to list test-pageSam Atkins
2022-03-18Base: Correct the :not() test page's titleSam Atkins
Oops!
2022-03-18Base: Add a test page for the CSS :is() selectorSam Atkins
2022-03-18LibWeb: Parse forgiving selector-listsSam Atkins
`<forgiving-selector-list>` and `<forgiving-relative-selector-list>` are the same as regular selector-lists, except that an invalid selector does not make the whole list invalid. The former is used by the `:is()` pseudo-class. For example: ```css /* This entire selector-list is invalid */ .foo, .bar, !?invalid { } /* This is valid, but the "!?invalid" selector is removed */ :is(.foo, .bar, !?invalid) { } ``` Also as part of this, I've removed the `parse_a_selector(TokenStream)` and `parse_a_relative_selector(TokenStream)` methods as they don't add anything useful.
2022-03-18LibGfx: Draw window frame border radii antialiasedMacDue
I think this now looks very nice :^)
2022-03-18LibGfx: AntiAliasingPainter::draw_circle/fill_rect_with_rounded_cornersMacDue
Follows the efficient algorithm from this paper: https://cs.uwaterloo.ca/research/tr/1984/CS-84-38.pdf Can be extended ellipses in future.
2022-03-18LibVT/Kernel: Make VT::Attribute::Flags enum class, use AK EnumBitsBrian Gianforcaro
Noticed the TODO in `Attribute.h` and realized we have as solution to this problem already. :^)
2022-03-18Kernel: Fix crash when opening GPU3DDevice without creating a contextSahan Fernando
2022-03-18Kernel: Don't initialize early framebuffer console if address is invalidLiav A
To do so, we now check that the framebuffer type is RGB so we know that the Multiboot bootloader actually provided a valid framebuffer to work with. This fixes a problem I observed on my ICH7 test machine that apparently the multiboot_framebuffer_addr was not null but there was no framebuffer that was set up for RGB colors, and by initializing that console, there was a memory curroption caused somewhere in the EBDA area to probably cause a complete system lockup.
2022-03-18Kernel: Allow to disable early boot consoleLiav A
This aid debugging on bare metal when we suspect that the boot console does something wrong that interferes with other kernel components.
2022-03-18Kernel/Graphics: Move all VGA related methods to GraphicsManagementLiav A
This helps solving an issue when we boot with text mode screen so the Kernel initializes an early text mode console, but even after disabling it, that console can still access VGA ports. This wouldn't be a problem for emulated hardware but bare metal hardware might have a "conflict", especially if the native driver explicitly request to disable the VGA emulation.
2022-03-18SoundPlayer: Fix read of uninitialized member variables on startupBrian Gianforcaro
I found these by running SoundPlayer under UserspaceEmulator. After boot we attempt to read from these values before they are initialized.
2022-03-18Kernel: Zero initialize DoubleBuffer::InnerBuffer::sizeBrian Gianforcaro
Found by PVS-Studio.
2022-03-18Kernel: Default initialize AC97::m_codec_revisionBrian Gianforcaro
Found by PVS-Studio.
2022-03-18Kernel: Zero initialize USBDevice::m_device_descriptorBrian Gianforcaro
Found by PVS-Studio.
2022-03-18Kernel: Rename locker variables in BMIDEChannel so they aren't shadowedBrian Gianforcaro
This class already has variables named m_lock, and it's also strange that locals are named with the `m_` prefix. So lets fix that to make the code more readable. Found by PVS-Studio.
2022-03-18Kernel: Zero initialize all members in NVMeControllerBrian Gianforcaro
Found by PVS-Studio.
2022-03-18Base: Add mp3 SoundPlayer association to the user LaunchServer configBrian Gianforcaro
This allows the user to double click on mp3 file names in the terminal output and open them in SoundPlayer.
2022-03-17Everywhere: Switch from EnableIf to requiresLenny Maiorani
C++20 provides the `requires` clause which simplifies the ability to limit overload resolution. Prefer it over `EnableIf` With all uses of `EnableIf` being removed, also remove the implementation so future devs are not tempted.
2022-03-18LibCrypto: Implement the SECP256r1 elliptic curveMichiel Visser
This implementation of the secp256r1 elliptic curve uses two techniques to improve the performance of the operations. 1. All coordinates are stored in Jacobian form, (X/Z^2, Y/Z^3, Z), which removes the need for division operations during point addition or doubling. The points are converted at the start of the computation, and converted back at the end. 2. All values are transformed to Montgomery form, to allow for faster modular multiplication using the Montgomery modular multiplication method. This means that all coordinates have to be converted into this form, and back out of this form before returning them.
2022-03-18AK: Add constant time equality and zero check to UFixedBigIntMichiel Visser
2022-03-18AK: UFixedBigInt add efficient multiplication with full resultMichiel Visser
2022-03-18FontEditor: Reset unicode block view on undo/redo actionsthankyouverycool
If the previous active glyph is outside the currently selected block range, reset GlyphMap to show all glyphs. This is less disorienting when undoing changes outside the visible range.
2022-03-18FontEditor: Make undo/redo compatible with multi-glyph selectionsthankyouverycool
Previously the glyph undo stack saved an array of bytes representing the restore state of an individual glyph when modified. Now the selection undo stack saves a byte buffer of the entire selection, letting us restore changes to multiple glyphs at once.
2022-03-18ClipboardHistory: Show ranges and max dimensions for copied glyphsthankyouverycool
Makes copy history a bit more informative by showing the code point range of the selection copied, or the individual character if the selection contains only one glyph.
2022-03-18FontEditor: Use memset/memcpy to copy/paste/delete glyphsthankyouverycool
Iterating over each glyph to set bits was rather slow in large selections. This lets us edit the entire character set almost instantly.
2022-03-18LibGfx: Add accessors for BitmapFont's rows and widthsthankyouverycool
2022-03-18LibJS: Tweak Interpreter::create() for more spec-likenessLinus Groh
Store a reference to the newly created execution context in an aptly named variable, rename global_this_value to just this_value, and only call set_global_object() in a single place.
2022-03-18LibJS: Use TRY(push_execution_context()) in places where we can recoverLinus Groh
2022-03-18LibJS: Add infallible variant of VM::push_execution_context()Linus Groh
It makes no sense to require passing a global object and doing a stack space check in some cases where running out of stack is highly unlikely, we can't recover from errors, and currently ignore the result anyway. This is most commonly in constructors and when setting things up, rather than regular function calls.
2022-03-18Hearts: Add icon to settings actionLinus Groh
2022-03-18Applications+Games: Drop ellipsis from settings actionLinus Groh
There is no second step to complete after activating this action.
2022-03-18Games: Add reload icon to 'New Game' actionsLinus Groh
2022-03-18Eyes: Add 'Contents' action to help menuLinus Groh
2022-03-17Kernel: Make number of RTL8168 rx/tx descriptors constexprLenny Maiorani
2022-03-17Meta: Ignore the return value of test-wasm on CIAli Mohammad Pur
2022-03-17Meta: Use sudo to unpack `wabt` package in CIAli Mohammad Pur
The self-hosted runner doesn't run the commands as root.
2022-03-17Meta: Install a recent build of wabt for INCLUDE_WASM_SPEC_TESTS in CIAli Mohammad Pur
Also skip prettifying the generated tests as we don't need to look at them.
2022-03-17PixelPaint: Expand FastBoxBlur settings to allow vector inputTobias Christiansen
This expands the previously added settings for the asymmetric radii of th FastBoxBlurFilter to allow the user to specify an angle and the desired magnitude of blur. The given values are then calculated forward to corresponding x and y blur radii.
2022-03-17PixelPaint: Add asymmetric parameters to FastBoxBlurTobias Christiansen
This allows the user to blur the image not uniformly, but to specify different radii for the x and y component.
2022-03-17LibGfx: Allow for different {x,y}-radii in FastBoxBlurFilterTobias Christiansen
Use different specified radii for the two seperate passes. The gaussian approximation is not changed to accept two parameters since the math is not exactly straight forward and therefore something for a later patch. For now, let's progress!
2022-03-17LibGfx: Make FastBoxBlurFilter::apply_single_pass's argument unsignedTobias Christiansen
It isn't sensible to have a negative radius for blurring, so an unsigned value is the right thing to do here. Now we have to cast the radius to int a few times when actually doing the calculations but I'm sure that can be done more intelligently, but that optimization is a thing for the future. It looked very goofy for the two different ways of invoking the Filter to have differently signed arguments.
2022-03-17Libraries: Use default constructors/destructors in LibGfxLenny Maiorani
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cother-other-default-operation-rules "The compiler is more likely to get the default semantics right and you cannot implement these functions better than the compiler."
2022-03-17Libraries: Use default constructors/destructors in LibWebLenny Maiorani
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cother-other-default-operation-rules "The compiler is more likely to get the default semantics right and you cannot implement these functions better than the compiler."