Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-04-10 | Introduce LibCore and move GElapsedTimer => CElapsedTimer. | Andreas Kling | |
I need a layer somewhere between AK (usable both by userspace and kernel) and LibGUI (usable by userspace except WindowServer.) So here's LibCore. | |||
2019-04-10 | LibGUI+WindowServer: Coalesce paints and resizes on the client side. | Andreas Kling | |
Only process paint and resize events on the GUI client side if those events have the latest up-to-date window size. This drastically reduces async overdraw during interactive resize. | |||
2019-04-10 | GWindow: Discard wrongly-sized backing stores in set_rect(). | Andreas Kling | |
The WindowServer still holds on to at least one backing store in case it needs to paint us again before we can render a new one. This ensures that we don't end up stuck with an undersized backing store. | |||
2019-04-10 | WindowServer: Give windows a "background color" to use for missing parts. | Andreas Kling | |
When resizing a window, we often end up having to paint some part of it without coverage in the current backing store. This patch makes those cases look nicer by having a fallback background color for each window, passed along with the CreateWindow client message. | |||
2019-04-10 | LibGUI: Add a simple GGroupBox widget. | Andreas Kling | |
This needs some work on the visual side, but it gets the job done already. | |||
2019-04-10 | GCheckBox: Paint the box part as a container frame. | Andreas Kling | |
2019-04-10 | LibGUI: Move frame painting from GFrame to StylePainter. | Andreas Kling | |
This way it can be used by others who might not have a GFrame object. | |||
2019-04-10 | LibGUI: Turn GTextBox into a wrapper around a single-line GTextEditor. | Andreas Kling | |
2019-04-10 | GSpinBox: Move increment/decrement button within the widget frame. | Andreas Kling | |
2019-04-10 | GWidget: Make hit testing respect child z-order. | Andreas Kling | |
This was as simple as iterating the children in reverse order. Duh. :^) | |||
2019-04-10 | LibGUI: Repaint GScrollBar without hover highlight immediately on leave. | Andreas Kling | |
2019-04-10 | GSpinBox: Put nice little arrow glyphs on the buttons. | Andreas Kling | |
2019-04-09 | LibGUI: Add a spinbox widget. | Andreas Kling | |
This is essentially a combo widget containing a single-line GTextEditor and two buttons for increment and decrement. The GTextEditor::on_change callback is hooked to prevent non-numeric input but it's not entirely perfect since that callback is asynchronous. This will work until we have some more sophisticated input validation mechanism though. | |||
2019-04-09 | GTextEditor: Add GTextEditor::on_change callback for when content changes. | Andreas Kling | |
2019-04-08 | LibGUI+WindowServer: Add support for GWidget tooltips. | Andreas Kling | |
Any GWidget can have a tooltip and it will automatically pop up below the center of the widget when hovered. GActions added to GToolBars will use the action text() as their tooltip automagically. :^) | |||
2019-04-08 | LibGUI: Move GSocketAddress to its own file. | Andreas Kling | |
2019-04-08 | Taskbar: Replace TaskbarWidget with a simple GFrame. | Andreas Kling | |
There's no need for a custom widget here, at least not now. | |||
2019-04-08 | LibGUI: Make GSocket connection asynchronous. | Andreas Kling | |
Now connect() will return immediately. Later on, when the socket is actually connected, it will call GSocket::on_connected from the event loop. :^) | |||
2019-04-08 | GHttp: Rename GHttpNetworkJob => GHttpJob. And tidy up a little bit. | Andreas Kling | |
2019-04-07 | GHttp: Fix little bug in HTTP header parsing. | Andreas Kling | |
2019-04-07 | GIODevice: Remove accidentally committed debug spam. | Andreas Kling | |
2019-04-07 | GHttp: Work on bringing this up. | Andreas Kling | |
2019-04-07 | Start working on a Downloader app and backing classes in LibGUI. | Andreas Kling | |
LibGUI is slowly becoming LibKitchensink but I'm okay with this for now. | |||
2019-04-06 | LibGUI: Always invalidate layout on GWidget child removal. | Andreas Kling | |
This code can get a bit confused when the child is destroyed before we handle the ChildRemoved event. In those cases, the GChildEvent::child() getter will return nullptr as it's backed by a WeakPtr. To work around this issue, just always invalidate the layout for now. This can be made a lot tighter in the future. | |||
2019-04-06 | GScrollBar: Add the same hover highlight effect as GButton. | Andreas Kling | |
2019-04-06 | Taskbar: Show minimized window titles in [brackets]. | Andreas Kling | |
Had to plumb the minimization state from WindowServer to Toolbar in order to implement this. | |||
2019-04-06 | LibGUI: GButton's caption should be drawn in the foreground color. | Andreas Kling | |
2019-04-05 | WindowServer: Merge WM_WindowAdded and WM_WindowStateChanged. | Andreas Kling | |
These events are identical, so it's silly to send both. Just broadcast window state changes everywhere instead, it doesn't matter when it was added as clients are learning about this asynchronously anyway. | |||
2019-04-05 | AK: Revert Eternal<T> for now since it doesn't work as intended. | Andreas Kling | |
2019-04-04 | Taskbar: Only include "Normal" windows in the taskbar window list. | Andreas Kling | |
2019-04-04 | LibGUI: Use TextElision::Right for GButton captions. | Andreas Kling | |
2019-04-04 | LibGUI: Allow specifying GButton text alignment. | Andreas Kling | |
2019-04-04 | Taskbar: Plumb window active state from the WindowServer to the taskbar. | Andreas Kling | |
2019-04-04 | LibGUI: Make it possible for GButton to be checkable. | Andreas Kling | |
2019-04-04 | Taskbar: More bringup work. We now see a basic window list. | Andreas Kling | |
2019-04-03 | Taskbar+LibGUI: More work on bringup. | Andreas Kling | |
2019-04-03 | Taskbar: Start working on a taskbar app. | Andreas Kling | |
I originally thought I would do this inside WindowServer, but let's try to make it as a standalone app that communicates with WindowServer instead. That will allow us to use LibGUI. :^) | |||
2019-04-03 | WindowServer: Broadcast screen rect changes to all clients. | Andreas Kling | |
GUI clients can now obtain the screen rect via GDesktop::rect(). | |||
2019-04-03 | AK: Add Eternal<T> and use it in various places. | Andreas Kling | |
This is useful for static locals that never need to be destroyed: Thing& Thing::the() { static Eternal<Thing> the; return the; } The object will be allocated in data segment memory and will never have its destructor invoked. | |||
2019-04-03 | GWindow: Don't ignore update(), it should repaint the whole window. | Andreas Kling | |
This was causing some apps to have an empty window on startup since the call to update() in show() was effectively a no-op. | |||
2019-04-02 | GInputBox: Make the input text box a bit taller. | Andreas Kling | |
2019-04-02 | GSocket: Add a connect() overload that takes a hostname instead of an IP. | Andreas Kling | |
2019-04-02 | Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace. | Andreas Kling | |
2019-04-02 | GTreeView: Support navigating the tree with the up/down keys. | Andreas Kling | |
2019-04-02 | LibGUI: Switch to a resizing cursor when hovering or using a GSplitter. | Andreas Kling | |
Also expose the various standard cursors on WSWindowManager so they can be reused by the override mechanism. | |||
2019-04-01 | LibGUI: Fix broken doubleclick detection due to uninitialized GElapsedTimer. | Andreas Kling | |
2019-03-31 | WindowServer: Add support for per-window override cursors. | Andreas Kling | |
Use this to implement automatic switching to an I-beam cursor when hovering over a GTextEditor. :^) | |||
2019-03-30 | Terminal+LibGUI: Make the terminal cursor blink. | Andreas Kling | |
Added a GTimer class to help with this. It's just a simple GObject subclass that sets up an event loop timer and invokes a callback on timeout. | |||
2019-03-30 | LibGUI: Fix bad initial layout of GScrollableWidget's scrollbars. | Andreas Kling | |
If it's the first time we're laying these out, we can't rely on the width() or height() to be set, so instead use preferred_size(). | |||
2019-03-30 | LibGUI: Highlight the GSplitter when hovering over it. | Andreas Kling | |