Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-04-12 | LibGUI+WindowServer: Add support for enabled/disabled actions. | Andreas Kling | |
The enabled state of a GAction now propagates both to any toolbar buttons and any menu items linked to the action. Toolbar buttons are painted in a grayed out style when disabled. Menu items are gray when disabled. :^) | |||
2019-04-11 | WindowServer: Tweak window title positioning. | Andreas Kling | |
2019-04-11 | WindowServer: Add 1440x900 resolution shortcut to system menu. | Andreas Kling | |
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 | WindowServer: Stop tracking whether clients have painted since last resize. | Andreas Kling | |
This optimization is no longer needed now that clients coalesce resizes on their own. :^) | |||
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 | 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 | WindowServer: Factor out some parts of compose(). | Andreas Kling | |
The main compositing loop was getting pretty unwieldy. Break out some parts into functions so it's more understandable. | |||
2019-04-09 | WindowServer: Show ongoing resize in number of w/h increments, too. | Andreas Kling | |
This makes something like "(80x25)" show up in the resizing label as well during Terminal resize. :^) | |||
2019-04-09 | WindowServer: Display the window geometry while it's being moved or resized. | Andreas Kling | |
2019-04-09 | WindowServer: Always activate newly added windows. | Andreas Kling | |
This feels a lot better than new windows popping in inactive state. | |||
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-06 | WindowServer: Add ability to initiate window resize from window edges. | Andreas Kling | |
2019-04-06 | WindowServer: Make WSButton a Weakable and stop rawly pointing to it. | Andreas Kling | |
We had a crash due to dereferencing a destroyed WSButton after clicking a window close button. Avoid that problem by using WeakPtr. | |||
2019-04-06 | WindowServer: Pick a new active window when the active window is minimized. | Andreas Kling | |
Also use the same logic when the active window is removed. | |||
2019-04-06 | WindowServer: Remove some debug spam. | Andreas Kling | |
2019-04-06 | Add a slight hover highlight to GButton and WSButton. :^) | 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-05 | WindowServer: Add a window minimization button. | Andreas Kling | |
The window is simply ignored in the painting and hit testing traversal when in minimized state, same as we do for invisible windows. The WM_SetActiveWindow message (sent by Taskbar) brings it back into the non-minimized state. :^) | |||
2019-04-05 | WindowServer: Make WSButton behave more like a normal button. | Andreas Kling | |
Previously it would just close the window on MouseDown. Now we do the normal thing where we require a MouseUp inside the button rect before committing. | |||
2019-04-05 | WindowServer: Make WSWindowFrame and WSButton deal in relative coordinates. | Andreas Kling | |
This was a bit painful to get right. The code is a lot more pleasant to deal with now that all coordinates are relative to their local system instead of being absolute screen coordinates. | |||
2019-04-05 | WindowServer: Simplify two mouse coordinate conversions. | Andreas Kling | |
2019-04-05 | WindowServer: Add a WSButton class and make the window close buttons use it. | Andreas Kling | |
2019-04-05 | WindowServer: Factor out window frame logic into a WSWindowFrame class. | Andreas Kling | |
The window frame is an object that contains a window, its title bar and window border. This way WSWindowManager doesn't have to know about all the different types of window borders, titlebar rects, etc. | |||
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 | WindowServer: Clip dirty cursor rects to the screen in compose(). | Andreas Kling | |
2019-04-04 | WindowServer: WM_SetActiveWindow should move the window to front as well. | Andreas Kling | |
2019-04-04 | Taskbar: Only include "Normal" windows in the taskbar window list. | Andreas Kling | |
2019-04-04 | WindowServer: Add WM_SetActiveWindow client request and use it in Taskbar. | Andreas Kling | |
This makes it possible for Taskbar to switch windows. :^) | |||
2019-04-04 | WindowServer: Broadcast the full window list to new WM listener clients. | Andreas Kling | |
2019-04-04 | WindowServer: Remove some unused debugging code. | Andreas Kling | |
2019-04-04 | Taskbar: Plumb window active state from the WindowServer to the taskbar. | Andreas Kling | |
2019-04-04 | Taskbar: More bringup work. We now see a basic window list. | 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-02 | LookupServer: Only interpret A records as 32-bit IPv4 addresses. | Andreas Kling | |
This fixes a bug where CNAME records would be interpreted as if they were IP addresses, causing much confusion. | |||
2019-04-02 | Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace. | 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 | WindowServer: Remove redundant client_id's from WSAPIClientRequest classes. | Andreas Kling | |
2019-04-01 | WindowServer: Make various function arguments const. | 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-31 | WindowServer: Show a special "move" cursor when dragging windows around. | Andreas Kling | |
2019-03-31 | WindowServer: Remove the old cursor character bitmaps. | Andreas Kling | |
2019-03-31 | WindowServer: Show directional cursors when resizing windows. | Andreas Kling | |
2019-03-31 | WindowServer: Add a WSCursor class (a bitmap and a hotspot.) | Andreas Kling | |
Also import a bunch of cursors I drew. Only the default ("arrow") cursor is ever used so far. | |||
2019-03-29 | Rename Painter::set_clip_rect() to add_clip_rect(). | Andreas Kling | |
It was confusing to see multiple calls to set_foo() in a row. Since this is an intersecting operation, let's call it add_clip_rect() instead. | |||
2019-03-28 | WindowServer: Use StylePainter to draw the window close buttons. | Andreas Kling | |
2019-03-28 | Move LibGUI/GStyle to SharedGraphics/StylePainter. | Andreas Kling | |
I want to paint some buttons in WindowServer where we don't have LibGUI. |