summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-06-13LibWeb: Turn <table bgcolor> into CSS background-colorAndreas Kling
More presentational attribute stuff. HN looking more and more like it's supposed to. :^)
2020-06-13LibWeb: Tweak UA style to reset text-align on table elementsAndreas Kling
I think maybe this is only supposed to happen in quirks mode but I'm not entirely sure. This makes "<center><table>..." behave as expected.
2020-06-13LibJS: Add JSON.parseMatthew Olsson
2020-06-13AK: JsonParser improvementsMatthew Olsson
- Parsing invalid JSON no longer asserts Instead of asserting when coming across malformed JSON, JsonParser::parse now returns an Optional<JsonValue>. - Disallow trailing commas in JSON objects and arrays - No longer parse 'undefined', as that is a purely JS thing - No longer allow non-whitespace after anything consumed by the initial parse() call. Examples of things that were valid and no longer are: - undefineddfz - {"foo": 1}abcd - [1,2,3]4 - JsonObject.for_each_member now iterates in original insertion order
2020-06-13LibJS: Add JSON.stringifyMatthew Olsson
2020-06-13Kernel: KeyboardDevice, remove char mapping logicHüseyin ASLITÜRK
Remove char mapping logic and constant character map.
2020-06-13Kernel: Process, replace internal data type to CharacterMapDataHüseyin ASLITÜRK
2020-06-13LibKeyboard: Move character map from Kernel to LibKeyboardHüseyin ASLITÜRK
2020-06-13Application: KeyboardMapper, make button to like a real keyHüseyin ASLITÜRK
Change key paint to more like a real key :)
2020-06-13Base: Add numpad keys to keymap filesHüseyin ASLITÜRK
2020-06-13LibWeb: Sort matched style rules by specificity, document orderAndreas Kling
If two rules have equal specificity, they should be applied in the order in which we encountered them.
2020-06-13LibWeb: Fix broken Specificity::operator==Andreas Kling
2020-06-13LibWeb: Include selector pseudo-class in style sheet dumpsAndreas Kling
2020-06-13LibWeb: Simplify Node::is_link()Andreas Kling
No need to check for presence of the href attribute as that is already checked by enclosing_link_element().
2020-06-13LibWeb: Parse and match the :visited pseudo-class (always fails)Andreas Kling
If we don't do this, something like "a:visited" is parsed as "a" which may then take precedence over a previous "a:link" etc.
2020-06-13LibWeb: More work on table layoutAndreas Kling
Table row layout is now split into two phases: 1. Compute all the column widths (even taking colspan into account!) 2. Place all cells at the correct x,y offsets based on column widths. Both phases visit all rows and all cells.
2020-06-13LibWeb: Allow url("foo") and url('foo') in CSS background-image valuesAndreas Kling
This is very hackish and will be fixed by writing a proper CSS parser.
2020-06-13LibWeb: Add "colspan" to HTML::AttributeNamesAndreas Kling
2020-06-13LibWeb: Add LayoutTableCell::colspan()Andreas Kling
A convenient function for looking up a cell's colspan attribute.
2020-06-12LibWeb: First cut of extremely naive table row layoutAndreas Kling
This first version simply auto-sizes all table cells and then places them on a horizontal line.
2020-06-12LibWeb: Turn <table width> into the CSS width propertyAndreas Kling
2020-06-12LibWeb: Turn <td bgcolor> into background-colorAndreas Kling
2020-06-12LibWeb: Add "bgcolor" to HTML::AttributeNamesAndreas Kling
2020-06-12LibWeb+Browser: Add a barebones LayoutTreeModel to the inspector windowAndreas Kling
This allows you to inspect the layout tree, along side the DOM tree. It will need more functionality to be truly useful, but it's a start.
2020-06-12Browser: Be a little bit smarter about interpretering command line URLsAndreas Kling
If the (optional) URL specified on the command line is an existing file we now resolve its real path before turning into a URL. This makes relative URLs inside the loaded document work correctly. Also interpret all other specified URLs the same way we would if you had typed them into the location bar.
2020-06-12LibCore: Add Core::File::real_path_for()Andreas Kling
A slightly convenient wrapper around realpath(3).
2020-06-12AK: Make string-to-number conversion helpers return OptionalAndreas Kling
Get rid of the weird old signature: - int StringType::to_int(bool& ok) const And replace it with sensible new signature: - Optional<int> StringType::to_int() const
2020-06-12AudioServer: removed AS prefix from class and file namessppmacd
And moved everything to AudioServer namespace
2020-06-12LibWeb: Handle negative values when collapsing vertical marginsAndreas Kling
In the presence of negative margins, we subtract the largest negative margin from max(0, largest positive margin).
2020-06-12LibWeb: Implement very basic margin collapsingAndreas Kling
We now collapse a block's top margin with the previous sibling's bottom margin so that the larger margin wins.
2020-06-12LibIPC: Use create_single_shot to construct timerKevin Meyer
2020-06-12AK: Remove useless castsSergey Bugaev
2020-06-12AK: Ensure RefCounted types are never copied or movedSergey Bugaev
Before this, it has been possible to assign a RefCounted object to another RefCounted object. Hilariosly (or sadly), that copied the refcount among the other fields, meaning the target value ended up with a wrong refcount. Ensure this never happens by disallowing copies and moves for RefCounted types.
2020-06-12AK: Assert refcount doesn't overflowSergey Bugaev
We don't really have a good way to prevent this kind of overflow, but let's at least immediately panic in this case.
2020-06-12AK: Switch RefCounted to atomic refcountingSergey Bugaev
This fixes all sorts of race conditions, primarily in the kernel, where till now it's been possible to obtain either double free or use-after-free by exploiting refcounting races.
2020-06-12AK: Use unsigned int for refcountSergey Bugaev
And while fixing all the tests that look at ref_count(), sneak in a fix for the test suite name.
2020-06-12AK: Ensure we never use OwnPtr<> with RefCounted typesSergey Bugaev
2020-06-12MenuApplets: Fix using OwnPtr<> with RefCounted typesSergey Bugaev
2020-06-12Calendar: Fix using OwnPtr<> with RefCounted typesSergey Bugaev
2020-06-12AK: ALWAYS_INLINE most Atomic<T> methodsSergey Bugaev
2020-06-12AK: Fix missing ptrdiff_t in non-Serenity buildsSergey Bugaev
We have to include <stddef.h> to get its definition.
2020-06-12LibWeb: Remove absolutely positioned elements from the normal flowAndreas Kling
Skip over absolutely positioned children when laying out the inline children of a block. This takes them out of the flow and allows them to be positioned correctly relative to the (absolute) containing block.
2020-06-12LibWeb: Remove absolute positioning logic from LayoutReplacedAndreas Kling
Absolutely positioned elements are placed by their containing block. Instead of trying to compute its own position, LayoutReplaced will now simply add itself as an absolutely positioned descendant of its containing block.
2020-06-12LibWeb: Add basic support for position:fixedAndreas Kling
Fixed position elements have the ICB as their containing block. The magic of fixed positioning is implemented at the rendering stage, where we temporarily translate painting by the current scroll offset. Note that "absolutely positioned" includes both position:absolute and position:fixed.
2020-06-12LibWeb: Whine about unrecognized CSS properties in debug logAndreas Kling
2020-06-12LibWeb: Rename BoxModelMetrics::full_margin() => margin_box()Andreas Kling
This matches the other member names (padding_box() and border_box().)
2020-06-12LibWeb: Some improvements to absolute positioningAndreas Kling
Absolutely positioned blocks now register themselves with their containing block (and note that the containing block of an absolutely positioned box is the nearest non-statically positioned block ancestor or the ICB as fallback.) Containing blocks then drive the layout of their tracked absolutely positioned descendants as a separate layout pass. This is very far from perfect but the general direction seems good.
2020-06-12LibWeb: Include class names in layout tree dumpsAndreas Kling
This makes it a lot easier to see which layout node is which DOM node.
2020-06-12LibIPC: Actually use the new Core::Timer::restart() I just addedAndreas Kling
Thanks @brynet for noticing. :^)
2020-06-11LibIPC+WindowServer+LibGUI: Detect and highlight unresponsive GUI appsAndreas Kling
IPC::ClientConnection now tracks the time since the last time we got a message from the client and calls a virtual function on itself after 3 seconds: may_have_become_unresponsive(). Subclasses of ClientConnection can then react to this if they like. We use this mechanism in WindowServer to send out a friendly Ping message to the client. If he doesn't Pong within 1 second, we mark the client as "unresponsive" and recompose all of his windows with a darkened appearance and amended title until he Pongs us. This is a little on the aggressive side and we should figure out a way to wake up less often. Perhaps this could only be done to windows the user is currently interacting with, for example. Anyways, this is pretty cool! :^)