summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-09-02Base: Add more emojiXexxa
๐Ÿ’ซ - U+1F4AB DIZZY ๐Ÿ’จ - U+1F4A8 DASHING AWAY ๐Ÿ‘ค - U+1F464 BUST IN SILHOUETTE ๐Ÿ‘ฅ - U+1F465 BUSTS IN SILHOUETTE ๐Ÿฆ‡ - U+1F987 BAT ๐Ÿฆˆ - U+1F988 SHARK ๐Ÿ - U+1F41D HONEYBEE ๐Ÿฅ€ - U+1F940 WILTED FLOWER ๐Ÿฆ€ - U+1F980 CRAB ๐Ÿฆ‘ - U+1F991 SQUID ๐Ÿฅ‚ - U+1F942 CLINKING GLASSES ๐Ÿš’ - U+1F692 FIRE ENGINE ๐Ÿš” - U+1F694 ONCOMING POLICE CAR โ›ต - U+26F5 SAILBOAT ๐Ÿ›Ž๏ธ - U+1F6CE BELLHOP BELL โŒš - U+231A WATCH ๐ŸŒ  - U+1F320 SHOOTING STAR ๐Ÿฅ‰ - U+1F949 3RD PLACE MEDAL ๐ŸฅŠ - U+1F94A BOXING GLOVE ๐Ÿ‘” - U+1F454 NECKTIE ๐Ÿงฆ - U+1F9E6 SOCKS ๐Ÿ’„ - U+1F484 LIPSTICK ๐Ÿฅ - U+1F941 DRUM ๐Ÿ“  - U+1F4E0 FAX MACHINE โ“ - U+2753 RED QUESTION MARK โ” - U+2754 WHITE QUESTION MARK โ• - U+2755 WHITE EXCLAMATION MARK โ— - U+2757 RED EXCLAMATION MARK
2022-09-02Base: Improve emojiXexxa
More similar in style to U+203C: โ‰๏ธ - U+2049 EXCLAMATION QUESTION MARK Add transparency: ๐Ÿ“ง - U+1F4E7 E-MAIL ๐Ÿ“จ - U+1F4E8 INCOMING ENVELOPE ๐Ÿ“ฉ - U+1F4E9 ENVELOPE WITH ARROW No joy in a joystick without an action-button! ๐Ÿ•น๏ธ - U+1F579 JOYSTICK
2022-09-02LibJS: Allow anonymous functions as default exportsdavidot
This requires a special case with names as the default function is supposed to have a unique name ("*default*" in our case) but when checked should have name "default".
2022-09-02LibJS: Make indirect bindings of module behave like normal bindingsdavidot
Before this we attempted to hack around this by only overriding has_binding. However this did not cover all cases, for example when assigning to variables before their declaration it didn't throw. By using the new find_binding_and_index virtual method we can just pretend the indirect bindings are real. Since indirect binding do come from a normal environment we need to ensure you cannot modify the binding and that properties like mutable are false as expected by the spec for such an indirect binding.
2022-09-02LibJS: Make DeclarativeEnvironment based on bindings instead of indicesdavidot
This will allow other environments which extend DeclarativeEnvironment to provide their own custom bindings.
2022-09-02LibJS: Allow exporting any imported bindingsdavidot
2022-09-02LibJS: Only check for duplicate exports if they have a namedavidot
Together with removing an incorrect VERIFY this allows multiple star imports in a single module.
2022-09-02LibJS: Put exports before symbols in keys of module namespace objectdavidot
2022-09-02LibJS: Call resolve instead of reject in AsyncFromSyncIteratorPrototypedavidot
2022-09-02LibJS: Handle empty named exportdavidot
This is an export which looks like `export {} from "module"`, and although it doesn't have any real export entries it should still add "module" to the required modules to load.
2022-09-02LibJS: Allow full ModuleExportName in namespacedavidot
This means we should accept a string after 'export * as '.
2022-09-02AK: Allow exponents in JSON double valuesdavidot
This is required for ECMA-404 compliance, but probably not for serenity itself.
2022-09-01LibMarkdown: Add newline and remove ANSI escape after code blocksdemostanis
Also make clang-tidy happy by making line a const&
2022-09-01Base: Add new Magnifier help documentationdjwisdom
2022-09-01LibGUI: Disable increment/decrement buttons on SpinBox based on valueTimothy Slater
When the value for a SpinBox equals the max, disable the increment button. Functionally, clicking the button doesn't do anything because the set_value() clamps the value to min/max and updates the textbox. However it is still nice to indicate to the user that they've reached the max. Same goes for minimum value and the decrement button.
2022-09-01LibGUI: Improve SpinBox usabilityTimothy Slater
Previously the value of the SpinBox is re-evaluated after every change to the TextBox control. This leads to very unintuitive behavior such as the user deleting the contents of the box and it having no visible effect. This happens because the TextBox no longer has a valid number and so gets reset to the current m_value of the SpinBox. By defering the update of to the SpinBox value until focus leaves the control we provide a much more intuitive experience with the text box. We do still validate when a user types something that it parses to an int. If it does not we delete the most recent character. This in effect prevents non-numeric numbers from being entered. Upon losing focus the value will be checked. If empty we set the SpinBox value to the minimum allowed value.
2022-09-01Base: Add new emojiJoel Hansen
โš”๏ธ - U+2694 Crossed Swords ๐Ÿงช - U+1F9EA Test Tube โš•๏ธ - U+2695 Medical Symbol ๐Ÿ€ - U+1F340 Four Leaf Clover
2022-09-01Base: Remove an upscaled version of a Hidden cursorKarol Kosek
It was the same as the normal Hidden cursor (a transparent image).
2022-09-01LibGfx: Fallback to a default scaled bitmap if the upscaled one failedKarol Kosek
This makes cursors in a 2x Display Scale without a special upscaled version (such as a Hand cursor) display the 1x version instead.
2022-09-01HackStudio: Fix cpp-gui templateNoahR02
2022-08-31PixelPaint: Change repeated code into a loop for Wand Select ToolTimothy Slater
2022-08-31LibGUI: Don't accept drag events in AbstractView if it's not editableKarol Kosek
With a new DragCopy cursor icon being used on accepted events, this caused a 'false assumption' that everything can be dropped into AbstractView. This will now only happen if the View is editable, which still isn't perfect, but at least the Settings app will no longer change cursors. Also note that we won't get "drag move" events as the comment below says, which disables automatic scrolling when dragging an element.
2022-08-31LibVT: Accept supported drag enter eventsKarol Kosek
2022-08-31WindowServer: Place drag and drop overlay at the cursor positionKarol Kosek
... instead of in the center of the cursor bitmap. It doesn't make much of a difference, as the default cursor hotspot is center. But since now we switch between a normal Drag cursor and DragCopy one that has set hotspot, this caused the overlay to shake.
2022-08-31WindowServer: Include window frames when sending drag eventsKarol Kosek
Previously, the cursor would use a default cursor on window frames such as the title bar and menu bar, which was not quite correct as drop events were still handled there.
2022-08-31WindowServer+LibGUI: Change cursor icon if DragEnter event was acceptedKarol Kosek
2022-08-31Base+WindowServer+LibGfx: Add new DragCopy CursorKarol Kosek
The purpose of this cursor is to indicate if a current dragged object (file, Spreadsheet cell) can be dropped onto a widget.
2022-08-31Base: Add 2x version of Drag cursor in Dark themeKarol Kosek
Failing to load 2x cursor resulted in using the default arrow cursor instead of scaling the 1x one.
2022-08-31PixelPaint: Make erase_selection work for non-rectangular selectionsTimothy Slater
Layer::erase_selection used to erase the entire bounding box of the selection. With the add/subtract merge modes for the selection tool it is possible to create selections which are not rectangular. This leads to deleting pixels that were not selected. This change adjusts the erase behavior to walk the selection rect and check if a pixel is selected or not before deleting.
2022-08-31Profiler: Display correctly rounded percentages as '#.##%'Jelle Raaijmakers
2022-08-31PixelPaint: Add Wand Select ToolTimothy Slater
Wand Selection tool uses similar logic to the Bucket Tool. Flood filling and threshold calculations to determine the affected area just in this case we do not set the pixels of the selected area, instead we use those pixels to alter the selection mask. In the future we can probably abstract out the shared flood logic so both tools can share the code.
2022-08-31Kernel: Buffer an entire region when generating coredumpsTim Schumacher
This allows us to unlock the region tree lock early, to avoid keeping the lock while we are doing IO.
2022-08-31Kernel: Work using copies of specific region data during a coredumpTim Schumacher
This limits our interaction with the "real" region tree (and therefore its lock) to the time where we actually read from the user address space.
2022-08-31PixelPaint: Change BucketTool flood fill algorithmTimothy Slater
This resolves some cases where the existing filling algorithm could get stuck in a recursion loop and evenutally overflow the stack.
2022-08-31PixelPaint: Account for alpha in color distance calculationTimothy Slater
This fixes an issue where BucketTool would consider "black" and "transparent" the same color.
2022-08-31LibJS: Implement SuperCall for the Bytecode-VMHendiadyoin1
2022-08-31LibJS: Use builder.join in `to_string_impl()`s where applicableHendiadyoin1
2022-08-31HackStudio: Warn of unsaved changes before making a new projectSkye Sprung
Before, the warning dialog would be opened after the NewProjectDialog, leading to focus-fighting by the two windows. This fixes that and makes the action more consistent with the standard serenity way of handling unsaved changes by asking before the NewProjectDialog is brought up. The way this is achieved avoids having to rewrite open_project as well.
2022-08-31HackStudio: Fix crash when opening or creating with open empty fileSkye Sprung
This commit fixes a crash that would occur due to an unnamed file being automatically saved via EditorWrapper::save(). Now, we throw up a FilePicker::get_save_filepath.
2022-08-31Ports: Tidy up Quake2 platform patchJelle Raaijmakers
There were a lot of unrelated formatting changes in the patch, which is now shrunk by roughly 60%.
2022-08-31Ports: Fix Quake2 dynamic loading issuesJelle Raaijmakers
Our DynamicLoader would choke on a couple of missing symbols. I'm not certain how this could have worked before, but there we go. :^)
2022-08-31Ports: Move Quake2 port in-treeJelle Raaijmakers
All commits have been combined into one platform support patch.
2022-08-31Ports: Support "restarts" in SDL2Jelle Raaijmakers
SDL2 applications are prone to reinitializing the SDL components when, for example, changing the display resolution. This would lead to crashes since we were doing things in the wrong order. * We now decouple `GLContext` from `SDL_Window` a bit more, allowing the window to be destroyed before the GLContext. * Do not quit the `GUI::Application`, let our event loop handle exiting These changes allow changing the display resolution in the Quake3 port.
2022-08-31PixelPaint: Add point_position_to_preferred_cell to RectangleSelectToolCrax97
Specializing point_position_to_preferred_cell for the RectangleSelectTool as it selects a new cells with a rounding behavior instead of a flooring behavior
2022-08-31PixelPaint: Ask the current tool for the preferred pixel locationCrax97
When handling mouse events, different tools may want to interact with a different pixel in the image for the same input position.
2022-08-31PixelPaint: Execute mousemove_event early return check beforeCrax97
This is done to allow querying the current active tool inside the event_with_pan_and_scale_applied and event_adjusted_for_layer functions without risking a null pointer dereference
2022-08-31PixelPaint: Add point_position_to_preferred_cell method to ToolCrax97
This method is used to point a position at the preferred pixel of the image. Certain tools may want to specify a different preferred pixel for the same input position.
2022-08-31LibGfx: Add Point::to_ceiled method for getting a ceiled PointCrax97
2022-08-31FileManager: Navigate to parent dir when current location is removedAdam Jakubek
When the location currently displayed in FileManager is removed, find the nearest existing parent path and open it in the window. Without the fix, the FileManager window remained in the deleted directory. Changing the path in 'DirectoryView' object will automatically update other components in the FileManager (breadcrumb bar, directory tree view).
2022-08-31LibGUI: Fix assertion when handling removal of FileSystemModel's rootAdam Jakubek
This commit fixes FileSystemModel behaviour when the root path of the model has been deleted. In this case, the model index resolved for the root path is invalid and passing it to 'begin_delete_rows' would trigger assertion failure. Instead of deleting all children rows one by one, we simply invalidate the whole model.