summaryrefslogtreecommitdiff
path: root/Servers
AgeCommit message (Collapse)Author
2019-04-14LibGUI+WindowServer: Add a way to dismiss opened menus from the client.Andreas Kling
2019-04-13WindowServer+LibGUI: Add ability to set per-window icons.Andreas Kling
The icons are passed around as filesystem paths for now, since the shared memory bitmaps only support 2 sides.
2019-04-12LibGUI+WindowServer: Add support for per-GWidget context menus.Andreas Kling
You can now simply assign a GMenu as a GWidget's context menu and it will automagically pop up on right click. :^)
2019-04-12LibGUI+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-11WindowServer: Tweak window title positioning.Andreas Kling
2019-04-11WindowServer: Add 1440x900 resolution shortcut to system menu.Andreas Kling
2019-04-10Introduce 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-10WindowServer: 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-10LibGUI+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-10WindowServer: 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-10WindowServer: 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-09WindowServer: 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-09WindowServer: Display the window geometry while it's being moved or resized.Andreas Kling
2019-04-09WindowServer: Always activate newly added windows.Andreas Kling
This feels a lot better than new windows popping in inactive state.
2019-04-08LibGUI+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-06WindowServer: Add ability to initiate window resize from window edges.Andreas Kling
2019-04-06WindowServer: 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-06WindowServer: 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-06WindowServer: Remove some debug spam.Andreas Kling
2019-04-06Add a slight hover highlight to GButton and WSButton. :^)Andreas Kling
2019-04-06Taskbar: 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-05WindowServer: 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-05WindowServer: 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-05WindowServer: 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-05WindowServer: Simplify two mouse coordinate conversions.Andreas Kling
2019-04-05WindowServer: Add a WSButton class and make the window close buttons use it.Andreas Kling
2019-04-05WindowServer: 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-05WindowServer: 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-05AK: Revert Eternal<T> for now since it doesn't work as intended.Andreas Kling
2019-04-04WindowServer: Clip dirty cursor rects to the screen in compose().Andreas Kling
2019-04-04WindowServer: WM_SetActiveWindow should move the window to front as well.Andreas Kling
2019-04-04Taskbar: Only include "Normal" windows in the taskbar window list.Andreas Kling
2019-04-04WindowServer: Add WM_SetActiveWindow client request and use it in Taskbar.Andreas Kling
This makes it possible for Taskbar to switch windows. :^)
2019-04-04WindowServer: Broadcast the full window list to new WM listener clients.Andreas Kling
2019-04-04WindowServer: Remove some unused debugging code.Andreas Kling
2019-04-04Taskbar: Plumb window active state from the WindowServer to the taskbar.Andreas Kling
2019-04-04Taskbar: More bringup work. We now see a basic window list.Andreas Kling
2019-04-03Taskbar: 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-03WindowServer: Broadcast screen rect changes to all clients.Andreas Kling
GUI clients can now obtain the screen rect via GDesktop::rect().
2019-04-03AK: 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-02LookupServer: 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-02Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace.Andreas Kling
2019-04-02LibGUI: 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-01WindowServer: Remove redundant client_id's from WSAPIClientRequest classes.Andreas Kling
2019-04-01WindowServer: Make various function arguments const.Andreas Kling
2019-03-31WindowServer: 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-31WindowServer: Show a special "move" cursor when dragging windows around.Andreas Kling
2019-03-31WindowServer: Remove the old cursor character bitmaps.Andreas Kling
2019-03-31WindowServer: Show directional cursors when resizing windows.Andreas Kling
2019-03-31WindowServer: 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.