summaryrefslogtreecommitdiff
path: root/Base/home
AgeCommit message (Collapse)Author
2020-03-20LibWeb: Add CSS property 'border'myphs
This makes it possible to write shorter CSS. Instead of writing .foo { border-width: 3px; border-style: solid; border-color: blue; } it is now possible to write .foo { border: 3px solid blue; } while the order of values is irrelevant. Currently only the basic values are supported. More values should be added in the future. Three more value specific parse functions were added: parse_line_width, parse_color, and parse_line_style Additionally a few test cases were added to borders.html.
2020-03-19LibWeb: Add <canvas> element and start fleshing out CRC2DAndreas Kling
This patch adds HTMLCanvasElement along with a LayoutCanvas object. The DOM and layout parts are very similar to <img> elements. The <canvas> element holds a Gfx::Bitmap which is sized according to the "width" and "height" attributes on the element. Calling .getContext("2d") on a <canvas> element gives you a context object that draws into the underlying Gfx::Bitmap of the <canvas>. The context weakly points to the <canvas> which allows it to outlive the canvas element if needed. This is really quite cool. :^)
2020-03-19LibJS: Prefer FunctionDeclaration if a statement begins with "function"Andreas Kling
2020-03-18LibWeb: Fire "mousedown" and "mousemove" events in the DOM :^)Andreas Kling
2020-03-18LibWeb: Start working on DOM event supportAndreas Kling
This patch adds the EventTarget class and makes Node inherit from it. You can register event listeners on an EventTarget, and when you call dispatch_event() on it, the event listeners will get invoked. An event listener is basically a wrapper around a JS::Function*. This is pretty far from how DOM events should eventually work, but it's a place to start and we'll build more on top of this. :^)
2020-03-17LibJS: Implement typeof operatorConrad Pankoff
2020-03-16LibJS: Replace the global print() function with console.log() :^)Andreas Kling
2020-03-16js: Fix simple scopes example0xtechnobabble
Weirdly enough, the "simple-scopes" test doesn't return undefined anymore, at first I thought the scoping was somehow broken, turns out the interpreter doesn't consider the returned y as the last evaluated value anymore, possibly because it's undefined (?).
2020-03-16LibJS: Implement abstract equality and inequality0xtechnobabble
2020-03-15LibJS: Add ObjectPrototype and implement hasOwnProperty()Andreas Kling
All Objects will now have ObjectPrototype as their prototype, unless overridden.
2020-03-15LibJS: Add StringPrototype and make it the prototype of StringObjectAndreas Kling
This patch adds String.prototype.charAt() to demonstrate that prototype property lookup works, and that you can call a prototype function on an object, and it will do what you expect. :^)
2020-03-14LibJS: Unescape strings in Token::string_value()Stephan Unverwerth
2020-03-14LibWeb: Implement Document.getElementById()Andreas Kling
This was pleasantly simple! We don't have an ElementWrapper yet, so it just returns a NodeWrapper, but it still basically works. :^)
2020-03-14LibWeb: Start implementing basic JavaScript DOM bindingsAndreas Kling
This patch introduces the Wrapper and Wrappable classes. Node now inherits from Wrappable, and can be wrapped in a GC-allocated Bindings::NodeWrapper object. The only property we expose right now is the very simple nodeName property. When a Document's JS::Interpreter is first instantiated, we add a "document" property with a DocumentWrapper object to the global object. This is pretty cool! :^)
2020-03-14LibWeb: Parse <script> elements and run any JavaScript found insideAndreas Kling
This patch begins integrating LibJS into LibWeb. Document holds the JS::Interpreter for now, and it is created on demand when you first call Document::interpreter(). We also add a simple "alert()" function to the global object.
2020-03-14LibJS: Lex single quote strings, escaped chars and unterminated stringsStephan Unverwerth
2020-03-14LibJS: Add operator precedence parsingStephan Unverwerth
Obey precedence and associativity rules when parsing expressions with chained operators.
2020-03-13HackStudio: Add Javascript projectsOriko
2020-03-12LibJS: Replace $gc() hack with a NativeFunction on the global objectAndreas Kling
To make this work, also start passing Interpreter& to native functions.
2020-03-12LibJS: Add NativeFunction, a callable wrapper around a C++ lambdaAndreas Kling
This can be used to implement arbitrary functionality, callable from JavaScript. To make this work, I had to change the way CallExpression passes arguments to the callee. Instead of a HashMap<String, Value>, we now pass an ordered list of Argument { String name; Value value; }. This patch includes a native "print(argument)" function. :^)
2020-03-12Meta: Add for-loop JavaScript test programConrad Pankoff
2020-03-12LibJS: Add test for function with argumentshowar6hill
2020-03-12LibJS: Implement basic MemberExpression parsingAndreas Kling
At last we can parse "hello friends".length :^)
2020-03-12js: Take the script file as a command-line argumentAndreas Kling
Now that we have the beginnings of a parser, let's take the script to run as a command-line argument and move all the test scripts into /home/anon/js :^) To run a script, simply use "js": $ js my-script.js To get an AST dump before execution, you can use "js -A"
2020-03-07LibWeb: Rename directory LibHTML => LibWebAndreas Kling
Let's rename this to LibWeb since it aims to provide more parts of the web platform than just HTML. :^)
2020-02-16WindowServer: Move configuration file into /etc/WindowServerAndreas Kling
This is in preparation for running WindowServer as a separate user.
2020-02-10WindowServer: Move applet code from MenuManager to AppletManager.asliturk
Move applet logic to the own class. Remove applet code from MenuManager. With new AppletManager applet order is configurable via WindowManager.ini file.
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. :^)