summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-11-01Kernel+LibC: Don't allow a directory to become a subdirectory of itselfAndreas Kling
If you try to do this (e.g "mv directory directory"), sys$rename() will now fail with EDIRINTOSELF. Dr. POSIX says we should return EINVAL for this, but a custom error code allows us to print a much more helpful error message when this problem occurs. :^)
2020-11-01Kernel: Flush TLB when quick-mapping PD/PT that was mapped on other CPUTom
If a PD/PT was quick-mapped by another CPU we still need to flush the TLB on the current CPU. Fixes #3885
2020-11-01HackStudio: Fixed opening the project by always opening the main.cpp fileKesse Jones
Now when opening the project a search will be made for a file with the extension cpp or js and opening it. If not found, the first file will be opened.
2020-11-01Kernel: kmalloc_eternal should align pointersTom
2020-11-01Shell: Do not leak the value of ARGV in nested function callsAnotherTest
2020-11-01Shell: Search for variables in the last frame firstAnotherTest
Otherwise, we'll end up overwriting another frame's variables if the names match up.
2020-11-01Shell: Store LocalFrames as NonnullOwnPtr<LocalFrame> insteadAnotherTest
As Vector<T> will relocate objects to resize, we cannot assume that the address of a specific LocalFrame will stay constant, or that the reference will not be dangling to begin with. Fixes an assertion that fires when a frame push causes the Vector to reallocate.
2020-11-01LibGUI: Allow dragging a previously unselected item with a single clickAndreas Kling
Views would previously require that an item be selected before it could be dragged. This patch makes us consider initiating a drag immediately after the view has been selected, without requiring a mouseup event in between.
2020-11-01LibGUI: Views should ignore double clicks that don't hit any indexAndreas Kling
2020-11-01LibGUI: Invalidate view cursor on model updateAndreas Kling
This is sad (since it would be nice to preserve the cursor+selection) but until we implement persistent model indexes, this at least prevents us from keeping a stale cursor index.
2020-11-01SoundPlayer: Optionally allow playback to loop indefinitelyBrendan Coles
2020-11-01LaunchServer: Add sheets=/bin/Spreadsheet file association to configBrendan Coles
2020-11-01Chess: Add the 'moderna' piece set (#3896)JetStarBlues
2020-11-01Kernel: Don't remap IOAPIC registers every time we try to read/writeTom
Remapping these registers every time we try to read from or write to them causes a lot of SMP broadcasts and a lot of other overhead. This improves boot time noticeably.
2020-11-01Meta: lint-shell-scripts: Exit if shellcheck is not installedBrendan Coles
2020-11-01Games: Use GUI::Icon::default_icon to set application iconBrendan Coles
2020-11-01Demos: Use GUI::Icon::default_icon to set application iconBrendan Coles
2020-11-01LibWeb: Enforce Same-Origin Policy (SOP) for XMLHttpRequest requestsBrendan Coles
`DOM::XMLHttpRequest` now checks if the requested URL has the same `Origin` as the requesting `Document`. If the requested URL is in violation of SOP the request is rejected and an "error" `DOM::Event` is dispatched.
2020-11-01Kernel: Reduce code duplication in the PCI IO access read helpersLiav A
We just call the early helpers as they do the same thing like the IO access helpers.
2020-11-01Kernel: Map PCI devices only once during bootLiav A
Instead of mapping a 4KB region to access device configuration space each time we call one of the PCI helpers, just map them once during the boot process. Then, if we request to access one of those devices, we can ask the PCI subsystem to give us the virtual address where the device's configuration space is mapped.
2020-10-31LibMarkdown: Use JS::MarkupGenerator for "js" code blocks :^)Linus Groh
2020-10-31LibMarkdown: Replace inline styles in HTML with CSS in <head>Linus Groh
2020-10-31LibWeb: Don't use 'font-weight: lighter' for Csilla in Default.cssLinus Groh
Base/res/fonts/CsillaThin7x10.font was renamed to Base/res/fonts/CsillaRegular10.font in 5abc03d, breaking the default styles of <code> and <pre>. The font lookup should still find a font variant when a non-existent weight is specified, but that's another issue for another day.
2020-10-31LibJS: Handle multi-line source code in MarkupGeneratorLinus Groh
The previous approach (keeping track of the current source position manually) was only working for single line sources (which is fair considering this was developed for Browser's JS console). The new approach is much simpler: append token trivia (all whitespace and comments since the last token), then append styled token value.
2020-10-31Terminal: Run clang-formatAndreas Kling
2020-10-31Spreadsheet: Add support for example views and hyperlinks in the docsAnotherTest
Now the functions can actually be demonstrated by small examples, embedded right inside the documentation via: spreadsheet://example/<page>#<example_name> Also allows pages to link to each other via the same scheme: spreadsheet://doc/<page>
2020-10-31LibJS: Function declarations in if statement clausesLinus Groh
https://tc39.es/ecma262/#sec-functiondeclarations-in-ifstatement-statement-clauses B.3.4 FunctionDeclarations in IfStatement Statement Clauses The following augments the IfStatement production in 13.6: IfStatement[Yield, Await, Return] : if ( Expression[+In, ?Yield, ?Await] ) FunctionDeclaration[?Yield, ?Await, ~Default] else Statement[?Yield, ?Await, ?Return] if ( Expression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return] else FunctionDeclaration[?Yield, ?Await, ~Default] if ( Expression[+In, ?Yield, ?Await] ) FunctionDeclaration[?Yield, ?Await, ~Default] else FunctionDeclaration[?Yield, ?Await, ~Default] if ( Expression[+In, ?Yield, ?Await] ) FunctionDeclaration[?Yield, ?Await, ~Default] This production only applies when parsing non-strict code. Code matching this production is processed as if each matching occurrence of FunctionDeclaration[?Yield, ?Await, ~Default] was the sole StatementListItem of a BlockStatement occupying that position in the source code. The semantics of such a synthetic BlockStatement includes the web legacy compatibility semantics specified in B.3.3.
2020-10-31ping: Account for raw sockets now receiving IPv4 headersAndreas Kling
2020-10-31IPv4: Include IP headers when receiving from a raw socketAndreas Kling
We were stripping the L3 headers from packets received on raw sockets. This didn't match what other systems do, so let's adjust our behavior. Thanks to @SpencerCDixon for noticing this! :^)
2020-10-31LibGfx: Move FontDatabase from LibGUI to LibGfxAndreas Kling
Not sure why I put this into LibGUI in the first place.
2020-10-31Applications: Use application icons for dialog windowsBrendan Coles
2020-10-31Spreadsheet: Add Help menuBrendan Coles
2020-10-31Profiler: Set window title based on the selected ViewUma Sankar Yedida
This will help us identify which View that we are currently looking at.
2020-10-30LibGUI: Remove redundant scroll_into_view() calls in TableViewAndreas Kling
The calls to set_cursor() already take care of scrolling the new cursor into view if needed.
2020-10-30LibJS: Require initializer for 'const' variable declarationLinus Groh
2020-10-30LibProtocol+LibGemini+LibHTTP: Provide root certificates to LibTLSAnotherTest
Now we (almost) verify all the sites we browse. Certificate verification failures should not be unexpected, as the existing CA certificates are likely not complete.
2020-10-30LibTLS: (Almost) verify certificate chain against root CA certificatesAnotherTest
Also adds a very primitive systemwide ca_certs.ini file.
2020-10-30LibCrypto: Remove spammy ModPow debug logAnotherTest
2020-10-30LibTLS: Also read out the Organisational Unit from the certificateAnotherTest
This needs to be read out if we want to actually verify the cert chain.
2020-10-30LibTLS: Move out Certificate to its own header fileAnotherTest
2020-10-30LibHTTP+ProtocolServer+LibGemini: Remove Request::schedule()AnotherTest
This API is only used for HttpRequest, but replicated in GeminiRequest without an actual user, so remove it and construct the job like the rest of the protocols.
2020-10-30LibGUI: Add Widget::has_focus_within()Andreas Kling
This returns true if the widget has focus, or if one of its descendant widgets does. Use this in StackWidget and TabWidget. This also fixes HackStudio crashing on startup in StackWidget, due to running before the window has a focused widget.
2020-10-30LibGUI: Improve TabWidget+StackWidget focus behavior furtherAndreas Kling
When setting a new active widget, transfer focus if it's anywhere in the old active widget's tree, not just at the immediate child.
2020-10-30LibGUI: Deduplicate widgets with proxied focus in focus chainAndreas Kling
When computing the chain of focusable widgets in a window, only include each widget once (to avoid loops) and resolve focus proxies immediately instead of lazily. This prevents the focus from getting stuck when cycling backwards and hitting a proxy that points forward.
2020-10-30WindowServer+LibGfx: Added Crosshair cursorUma Sankar Yedida
2020-10-30LibGUI: Improve automatic focus guessing somewhatAndreas Kling
When opening a new window, we'll now try to find a suitable widget for initial focus by picking the first available mouse-focusable one. Whenever you press the tab key in a window with no focused widget, we'll attempt to find a keyboard-focusable widget and give it focus. This should make all applications keyboard-interactive immediately without having to manually place focus with the mouse.
2020-10-30LibGUI: Use ToolBarButton helper class inside ToolBarAndreas Kling
2020-10-30LibGUI: Fix null parent deref in AbstractButton::set_checked()Andreas Kling
If a button is orphaned, there are no siblings anyway, so there's no need to try to update them.
2020-10-30LibGUI: Make TabWidget unfocusable when tab-lessAndreas Kling
If there are no tab buttons or tab children, don't participate in the focus chain.
2020-10-30LibGUI: Make StackWidget/TabWidget preserve focus in inactive windowsAndreas Kling
This one is a bit sketchy. While a window is inactive, none of its widgets are considered focused (Widget::is_focused() will return false) but this caused programmatic changes of the active widget in a tab or stack widget to fail focus propagation from old child to new child. Work around this by checking against Window::focused_widget() directly instead of asking Widget::is_focused().