summaryrefslogtreecommitdiff
path: root/Base/home
AgeCommit message (Collapse)Author
2019-12-23WindowServer+LibGUI: Implement basic color themingAndreas Kling
Color themes are loaded from .ini files in /res/themes/ The theme can be switched from the "Themes" section in the system menu. The basic mechanism is that WindowServer broadcasts a SharedBuffer with all of the color values of the current theme. Clients receive this with the response to their initial WindowServer::Greet handshake. When the theme is changed, WindowServer tells everyone by sending out an UpdateSystemTheme message with a new SharedBuffer to use. This does feel somewhat bloated somehow, but I'm sure we can iterate on it over time and improve things. To get one of the theme colors, use the Color(SystemColor) constructor: painter.fill_rect(rect, SystemColor::HoverHighlight); Some things don't work 100% right without a reboot. Specifically, when constructing a GWidget, it will set its own background and foreground colors based on the current SystemColor::Window and SystemColor::Text. The widget is then stuck with these values, and they don't update on system theme change, only on app restart. All in all though, this is pretty cool. Merry Christmas! :^)
2019-12-16LibHTML: Support the :only-child pseudo classAndreas Kling
2019-12-16LibHTML: Support the :empty pseudo classAndreas Kling
2019-12-16LibHTML: Support the :first-child and :last-child pseudo classesAndreas Kling
2019-12-08WindowServer: Disambiguate "dragging" a bit, use "moving" more insteadAndreas Kling
Windows that are being moved around by the user are now called "moving" windows instead of "dragging" windows, to avoid confusion with the drag and drop stuff.
2019-12-08WindowServer: Add a dedicated drag cursorAndreas Kling
2019-12-04Taskbar: Add a quick launch barSergey Bugaev
This is a tiny bar at the left of the taskbar where you can put your most used apps to launch them with a single click. In a way, it's another replacement for the Launcher, in addition to the app menu. Unlike the launcher and the menu, it's not meant to be the primary way to launch apps; it's only a faster way to launch a few most often used utilities.
2019-11-25LibHTML: Implement basic <form> and <input> element supportAndreas Kling
This patch adds "submit" inputs and default (text box) inputs, as well as form elements that can be submitted. Layout of input elements is implemented via a new LayoutWidget class that allows you to put an arbitrary GWidget in the layout tree. At the moment, the DOM node sets the initial size of the LayoutWidget, and then the positioning is done by the normal layout algorithm. We also now support submitting a <form method="GET">, which does a full replacing load with a URL based on the form's action + a query string built from the name/value of input elements within the submitted form. This is pretty neat! :^)
2019-11-25Base: Import the 1st and 2nd Acid tests for web standards complianceAndreas Kling
Getting these to work will take a lot of work, but most of it will be pretty fun, so I guess we start by importing them. :^)
2019-11-25LibHTML: Draw each CSS border edge separately with their own styleAndreas Kling
The borders still look very wrong with any border-width other than 1, but at least we can see that they have the right color, and end up in mostly the right place :^)
2019-11-21LibHTML: Handle stand-alone attribute selectorsAndreas Kling
A selector like "[foo]" is now parsed as a universal selector component with an attribute match type. Pretty neat :^)
2019-11-21LibHTML: Implement some attribute selector supportAndreas Kling
This patch adds a[foo] and a[foo=bar] attribute selectors. Note that an attribute selector is an optional part of a selector component, and not a component on its own.
2019-11-18little: Make this build by default, and add some curliesAndreas Kling
2019-11-11Launcher: Remove the Launcher app, and all hacks in support of itAndreas Kling
The Launcher's functionality has been replaced by the app shortcuts in the system menu. There were various window management hacks to ensure that the launcher stayed below all other windows while also being movable, etc.
2019-11-10Base: Add link to bettermotherfuckingwebsite in welcome.htmlMarcel Schneider
2019-11-09FileManager: Remember my last position and size.Hüseyin ASLITÜRK
2019-11-09HackStudio: Start fleshing out the GUI for a GUI designer :^)Andreas Kling
I'll be reconstructing parts of the VisualBuilder application here and then we can retire VisualBuilder entirely once all the functionality is available in HackStudio.
2019-11-07Base: Add a local copy of bettermotherfuckingwebsite.com for testingAndreas Kling
2019-11-04FileManager: Remember my last view mode (#731)Hüseyin ASLITÜRK
2019-10-30HackStudio: Show documentation preview in tooltip on identifier hoverAndreas Kling
When hovering over a C++ token that we have a man page for, we now show the man page in a tooltip window. This feels rather bulky at the moment, but the basic mechanism is quite neat and just needs a bunch of tuning.
2019-10-25HackStudio: Start building a C++ lexer to help with syntax highlightingAndreas Kling
2019-10-23HackStudio: Add "little" test project file listAndreas Kling
2019-10-22HackStudio: Add a simple "Run" actionAndreas Kling
Ctrl+R will now execute "make run" in the project directory. :^)
2019-10-22HackStudio: Show the currently open file in bold (in the project list)Andreas Kling
Also import a little default C++ project called "little" :^)
2019-10-20LibHTML: Implement "text-align: justify"Andreas Kling
In order for this to work nicely, I made the line box classes use float instead of int for its geometry information. Justification works by distributing all of the whitespace on the line (including the trailing whitespace before the line break) evenly across the spaces in-between words. We should probably use floating point (or maybe fixed point?) for all the layout metrics stuff. But one thing at a time. :^)
2019-10-20LibHTML+Browser: Support scrolling to anchor with <a href="#foo">Andreas Kling
This patch implements basic support for <a href="#foo"> fragment links. To figure out where we actually want to scroll to, we have to do something different based on the layout node's box type. So if it's a regular LayoutBox we can just use the LayoutBox::position(). However, if it's an inline layout node, we use the position of the first line box fragment in the containing block contributed by this layout node or one of its descendants.
2019-10-19LibHTML: Implement basic tiled background image supportAndreas Kling
It's now possible to set a page background image via <body background>. Also, HtmlView now officially handles rendering the body element's background (color, image or both.) LayoutBox is responsible for all other background rendering. Note that it's not yet possible to use CSS background-image properties directly, since we can't parse them yet. :^)
2019-10-16LibHTML: Add the <center> elementAndreas Kling
This is really just "center { display: block; text-align: center; }" in the default stylesheet, but it totally works!
2019-10-16LibHTML: Implement CSS text-align: left/center/rightAndreas Kling
This was easier than I imagined; we just shift each line box to the left based on the alignment and the remaining space on each line. :^)
2019-10-14LibHTML: Implement basic :hover pseudo-class supportAndreas Kling
This is currently very aggressive. Whenever the Document's hovered node changes, we invalidate all style and do a full relayout. It does look cool though. So cool that I'm adding it to the default stylesheet. :^)
2019-10-13LibHTML: Handle comments in the CSS parserAndreas Kling
Turn consume_whitespace() into consume_whitespace_or_comments() and have it swallow /* comments */ as well.
2019-10-12LibHTML: Add Comment and CharacterData nodes and improve HTML parsingAndreas Kling
This patch adds the CharacterData subclass of Node, which is now the parent class of Text and a new Comment class. A Comment node is one of these in HTML: <!--hello friends--> Since these occur somewhat frequently on the web, we need to be able to parse them. This patch also adds a child rejection mechanism to the DOM tree. Nodes can now override is_child_allowed(Node) and return false if they don't want a particular Node to become a child of theirs. This is used to prevent Document from taking on unwanted children.
2019-10-12LibHTML: Implement the <br> element for line breakingAndreas Kling
The <br> element will produce a special LayoutBreak node in the layout tree, which forces a break in the line layout whenever encountered. This patch also makes LayoutBlock use the current line-height as the minimum effective height for each line box. This ensures that having multiple <br> elements in a row doesn't create 0-height line boxes.
2019-10-10LibGUI+WindowServer: Add a "Hand" cursor to the standard cursorsAndreas Kling
2019-10-09LibHTML: Implement the <blink> elementAndreas Kling
Just in time for Serenity's 1st birthday, here is the <blink> element! This patch adds a bunch of different mechanisms to enable partial repaints of the layout tree (LayoutNode::set_needs_display())) It also adds LayoutNode::is_visible(), which can be toggled to prevent a LayoutNode from rendering anything (it still takes up space though.)
2019-10-08LibHTML: Add ResourceLoader to support protocol-agnostic URL loadingAndreas Kling
We now support loading both file:// and http:// URLs. Feel free to visit http://www.serenityos.org/ and enjoy the fancy good times. :^)
2019-10-07LibHTML: Start adding support for <link rel="stylesheet">Andreas Kling
This patch adds basic support for external stylesheets. It currently only works with file:// URLs. We do a synchronous full relayout after loading a stylesheet, which is definitely on the aggressive side, but it gives us something to work on improving. :^)
2019-10-06LibDraw: Parse some more color string formats found on the webAndreas Kling
This patch adds the 17 color names from CSS2.1, as well as support for the "#rgb" shorthand where each component is a hex digit that gets multiplied by 17.
2019-10-06LibHTML: Add adjacent (+) and general (~) sibling combinatorsAndreas Kling
This patch implements two more selector features: - "div + p" matches the <p> sibling immediately after a <div>. - "div ~ p" matches all <p> siblings after a <div>.
2019-10-06LibHTML: Implement immediate-child selectors (#foo > #bar)Andreas Kling
2019-10-06LibHTML: Implement matching for descendant selectorsAndreas Kling
The CSS engine now correctly matches selectors like "#foo #bar #baz".
2019-10-06Base: Add a page for image features to the www directoryConrad Pankoff
2019-10-05Base: Add a little welcome page for the browser at ~/www/welcome.htmlAndreas Kling
2019-10-04Base: Add a little HTML test for presentational hintsAndreas Kling
2019-10-01Base: Rename the "html" test directory to "www"Andreas Kling
It was conflicting with the html program and I'm too lazy to deal with that right now. :^)
2019-09-29Base: Move HTML test pages into /home/anon/htmlAndreas Kling
Also add a simple test page for inline style sheets.
2019-09-29Base: Add some title attributes to the small HTML test file :^)Andreas Kling
2019-09-28Base: Add a little hyperlink to the small HTML test pageAndreas Kling
This will be useful for testing rendering, hit testing, etc.
2019-08-14ProcessManager: Rename it to SystemMonitorSergey Bugaev
This is a more appropriate name now that it does a lot more than just manage processes ^)
2019-08-11Base: Draw some new icons for various apps, tweak othersAndreas Kling
The following apps get new icons: - IRCClient - ProcessManager - Snake - Terminal - TextEditor ...and the PaintBrush icon has its saturation increased a bit. Also remove FontEditor from the Launcher default settings since it doesn't really belong in the set of commonly used apps.