summaryrefslogtreecommitdiff
path: root/Userland
AgeCommit message (Collapse)Author
2022-01-16LibGUI+FontEditor: Move GlyphMapWidget to LibGUISam Atkins
This will allow us to use this in other apps, such as the upcoming Character Map. :^)
2022-01-16LibGUI: Make button icons settable in GMLSam Atkins
`Widget::load_from_gml()` doesn't yet return `ErrorOr`, so we log a warning message if loading the icon fails.
2022-01-16LibJS: Implement Date.prototype.setUTCDateTimothy Flynn
2022-01-16LibJS: Implement Date.prototype.setUTCFullYearTimothy Flynn
2022-01-16LibJS: Implement Date.prototype.setUTCHoursTimothy Flynn
2022-01-16LibJS: Implement Date.prototype.setUTCMillisecondsTimothy Flynn
2022-01-16LibJS: Implement Date.prototype.setUTCMinutesTimothy Flynn
2022-01-16LibJS: Implement Date.prototype.setUTCMonthTimothy Flynn
2022-01-16LibJS: Implement Date.prototype.setUTCSecondsTimothy Flynn
2022-01-16LibJS: Protect [TimeValue]FromTime from non-finite timesTimothy Flynn
Includes HourFromTime, MinFromTime, SecFromTime, msFromTime.
2022-01-16LibJS: Protect DayWithinYear against non-finite timesTimothy Flynn
2022-01-16LibJS: Protect YearFromTime against non-finite timesTimothy Flynn
2022-01-16LibJS: Ensure final computation in DayFromYear is performed on a doubleTimothy Flynn
When we multiple by 365, ensure the result is a double (not an i32) to prevent overflow.
2022-01-15LibVT: Don't clip TerminalWidget's drawing to avoid scrollerMatt Jacobson
The scroller might be hidden or (in theory) non-opaque.
2022-01-16LibJS: Implement create_dynamic_function() according to the specLinus Groh
The three major changes are: - Parsing parameters, the function body, and then the full assembled function source all separately. This is required by the spec, as function parameters and body must be valid each on their own, which cannot be guaranteed if we only ever parse the full function. - Returning an ECMAScriptFunctionObject instead of a FunctionExpression that needs to be evaluated separately. This vastly simplifies the {Async,AsyncGenerator,Generator,}Function constructor implementations. Drop '_node' from the function name accordingly. - The prototype is now determined via GetPrototypeFromConstructor and passed to OrdinaryFunctionCreate.
2022-01-16LibJS: Allow passing prototype to ECMAScriptFunctionObject::create()Linus Groh
This should have been the default as it roughly represents the OrdinaryFunctionCreate AO. For now, keep two overloads and continue to guess the required prototype from the function kind in most cases. The prototype needs to be passed in explicitly when it may be derived from user code, such as in the CreateDynamicFunction AO.
2022-01-16LibJS: Don't require ParenClose in Parser::parse_formal_parameters()Linus Groh
The parentheses are dealt with outside this function, so we shouldn't use the (non)existence of one as the condition for consuming another comma and then parameter. Just check for a comma instead. This becomes relevant when parsing standalone function parameters as per the spec in the CreateDynamicFunction AO.
2022-01-16LibJS: Consume curly braces outside of Parser::parse_function_body()Linus Groh
The curly braces are not part of the FunctionBody production. This becomes relevant when parsing a standalone function body as per the spec in the CreateDynamicFunction AO.
2022-01-16LibJS: Add VM::active_function_object()Linus Groh
2022-01-16LibJS: Rename FunctionKind::{Regular => Normal}Linus Groh
This is what CreateDynamicFunction calls it.
2022-01-15PixelPaint: Add delete selection behaviorOlivier De Cannière
The delete key can now be used to erase the pixels on the active layer contained within the selection rectangle. Closes #11861
2022-01-16Everywhere: Mark Vector of mutable references as mutablecreator1creeper1
The point of a reference type is to behave just like the referred-to type. So, a Foo& should behave just like a Foo. In these cases, we had a const Vector. If it was a const Vector of Foo, iterating over the Vector would only permit taking const references to the individual Foos. However, we had a const Vector of Foo&. The behavior should not change. We should still only be permitted to take const references to the individual Foos. Otherwise, we would be allowed to mutate the individual Foos, which would mutate the elements of the const Vector. This wouldn't modify the stored pointers, but it would modify the objects that the references refer to. Since references should be transparent, this should not be legal. So it should be impossible to get mutable references into a const Vector. Since we need mutable references in these cases to call the mutating member functions, we need to mark the Vector as mutable as well.
2022-01-15nc: Port to LibMainKenneth Myhra
2022-01-15PixelPaint: Restrict "crop to selection" to image boundariesMateusz Krajewski
2022-01-15Assistant: Fix crash in FileProvider background thread upon exitRummskartoffel
If the Threading::BackgroundAction for filesystem indexing in FileProvider hadn't finished by the time the main thread exited, it would still try to access the FileProvider object that lived in the main thread, thereby causing a segfault and crashing. This commit prevents FileProvider from being destroyed while the background thread is still running by giving the background thread a strong reference to its FileProvider.
2022-01-15Assistant: Make Provider ref-countedRummskartoffel
2022-01-15unzip: Don't fail from mmap when trying to decompress empty filesRummskartoffel
Given an empty file, unzip would try to create a zero-size memory mapping of that file, which would fail with EINVAL. With this commit, attempting to unzip an empty file of course still fails, since that's not a valid PKZIP file, but it now fails for the correct reason and with the correct error message.
2022-01-15LibJS: Implement Date.prototype.getTimezoneOffsetTimothy Flynn
2022-01-15LibJS: Implement MakeDay without using AK::years_to_days_since_epochTimothy Flynn
Implementing years_to_days_since_epoch without a loop will be tricky. The TimeFromYear AO gives a good enough approximation for MakeDay until we figure that out.
2022-01-15LibJS: Move time conversion constants to the Date headerTimothy Flynn
These are needed outside of the Date object .cpp file, so move them to the header.
2022-01-15LibJS: Remove Core::DateTime logic from the Date object :^)Timothy Flynn
2022-01-15LibJS+js: Pretty-print Date objects using the ToDateString AOTimothy Flynn
2022-01-15LibJS: Re-implement the Date constructor / prototype for spec complianceTimothy Flynn
First, this adds a constructor to the Date object to be created from a plain double. This is a first step to removing Core::DateTime as the basis for the Date object. A subsequent commit will remove the now- unused data from the object. Next, this implements the constructor in accordance to the spec. The constructor when NewTarget is undefined no longer allocates a Date on the heap. The other constructor properly uses recently created AOs to handle time zone and ensure the created [[DateValue]] is valid. Other methods on the constructor (Date.now) have not been touched yet. Last, the prototype is reimplemented. Again, we use other AOs to handle time zones and time clipping. Not all prototypes are fixed; most of them are, but a few (e.g. Date.prototype.getTimezoneOffset) were not fixed, but left in a mostly unimplemented state for another commit. In all of the above, spec comments are added. This is a rather large change; but it's tough to do any of these parts individually without breaking everything else.
2022-01-15LibJS: Make the thisTimeValue AO publicTimothy Flynn
It will be needed by the Date constructor.
2022-01-15LibJS: Implement spec-compliant ToDateString and its underlying AOsTimothy Flynn
2022-01-15LibJS: Protect LocalTZA against non-finite timesTimothy Flynn
It is undefined behavior to cast from a double to an integer if the value does not fit in the limits of the integer.
2022-01-15LibJS: Do not negate offset in LocalTZA for isUTC=falseTimothy Flynn
In commmit 7d2834344a7635ec45aba28a0351feca8e5f1c17, I think I combined the definitions of the LocalTZA and UTC AOs in my head, and thought the offset should be negated within LocalTZA. Instead, the offset should be left untouched, and the UTC AO is responsible for doing the subtraction.
2022-01-15LibJS: Implement the LocalTime, UTC, and TimeWithinDay AOsTimothy Flynn
2022-01-15LibJS: Sort Date.prototype methods by spec orderTimothy Flynn
When viewing the code side-by-side with the spec, it's much nicer when everything is in the same order. Also fixes the spec link for Date.prototype.getMilliseconds (it pointed at setMilliseconds by mistake).
2022-01-15LibTimeZone: Canonicalize the current time zone and fall back to UTCTimothy Flynn
If the tzname is unknown, fall back to UTC for now. Unknown time zones are most likely due to not parsing RULE entries yet, but at the very least, it only makes sense for current_time_zone to return a time zone that LibTimeZone actually knows about.
2022-01-15LibELF: Use shared memory mapping when loading ELF objectsAndreas Kling
There's no reason to make a private read-only mapping just for reading (and validating) the ELF headers, and copying out the data segments.
2022-01-15Spreadsheet: Use FileSystemAccessClient for the reading of filesGlenford Williams
2022-01-15LibGL+LibSoftGPU: Add support for 8-bit luminance (+ alpha) texturesLuke Wilde
Used by Half-Life for single colour textures. The alpha variant is especially used for UI textures.
2022-01-15Terminal: Add config listeners for controlling scrollbar visibilityBrian Gianforcaro
2022-01-15TerminalSettings: Expose a CheckBox controlling scrollbar visibilityBrian Gianforcaro
2022-01-15LibVT: Enable caller to control the visibility of the scrollbar widgetBrian Gianforcaro
In preparation for another feature, expose an API so that any users of this widget can control the scrollbar visibility.
2022-01-15LibCore+LibIPC+Everywhere: Return Stream::LocalSocket from LocalServersin-ack
This change unfortunately cannot be atomically made without a single commit changing everything. Most of the important changes are in LibIPC/Connection.cpp, LibIPC/ServerConnection.cpp and LibCore/LocalServer.cpp. The notable changes are: - IPCCompiler now generates the decode and decode_message functions such that they take a Core::Stream::LocalSocket instead of the socket fd. - IPC::Decoder now uses the receive_fd method of LocalSocket instead of doing system calls directly on the fd. - IPC::ConnectionBase and related classes now use the Stream API functions. - IPC::ServerConnection no longer constructs the socket itself; instead, a convenience macro, IPC_CLIENT_CONNECTION, is used in place of C_OBJECT and will generate a static try_create factory function for the ServerConnection subclass. The subclass is now responsible for passing the socket constructed in this function to its ServerConnection base; the socket is passed as the first argument to the constructor (as a NonnullOwnPtr<Core::Stream::LocalServer>) before any other arguments. - The functionality regarding taking over sockets from SystemServer has been moved to LibIPC/SystemServerTakeover.cpp. The Core::LocalSocket implementation of this functionality hasn't been deleted due to my intention of removing this class in the near future and to reduce noise on this (already quite noisy) PR.
2022-01-15LibCore: Implement LocalSocket::peer_pidsin-ack
Mostly a copy of Core::LocalSocket::peer_pid.
2022-01-15LibCore: Implement LocalSocket::adopt_fdsin-ack
Similar to File::adopt_fd, this function creates a new LocalSocket with an existing fd. The main use of this function is to create LocalSocket objects from fds that have been passed to us by SystemServer to take over.
2022-01-15LibCore: Implement LocalSocket::read_without_waitingsin-ack
This uses recv with MSG_DONTWAIT to disable blocking operation for a single call. LibIPC uses this to read in a non-blocking manner from an otherwise blocking socket.