summaryrefslogtreecommitdiff
path: root/Servers/WindowServer/WSWindowManager.h
AgeCommit message (Collapse)Author
2019-05-28Add clang-format fileRobin Burchell
Also run it across the whole tree to get everything using the One True Style. We don't yet run this in an automated fashion as it's a little slow, but there is a snippet to do so in makeall.sh.
2019-05-27can now tile background and made sure the IRC choose server popup still worksChristopher Dumas
2019-05-27IRC client setttings, Terminal settings, more WM settingsChristopher Dumas
2019-05-27implemented settings for window manager.Christopher Dumas
2019-05-27Network stack is now configurable, and resolution is also configurable, but ↵Christopher Dumas
loading cursors causes a page-fault?
2019-05-24WindowServer: Remove some unused WSWindowManager members.Andreas Kling
2019-05-24WindowServer: Factor out compositing from WSWindowManager into WSCompositor.Andreas Kling
This is far from finished and the two classes are awkwardly grabbing at each other's innards, but here's a first step in the right direction.
2019-05-18WSWindowManager: Add double click to maximize/restoreRobin Burchell
2019-05-17WindowServer: Add support for fullscreen windows.Andreas Kling
Fullscreen windows are rendered alone and above everything else when they are active, and as part of the regular window stack order when something else is active. Currently windows cannot be made fullscreen after-the-fact, but must have the fullscreen flag included in their CreateWindow message. It should not possible to interact with the menu, taskbar or window frame while the active window is fullscreened. :^)
2019-05-15Move double click events from LibGUI to the window serverRobin Burchell
2019-05-13WindowServer: Make the ordering in the window switcher a bit more sane.Andreas Kling
2019-05-12WindowServer: Add a maximize/unmaximize button to windows.Andreas Kling
2019-05-03LibGUI+WindowServer: Add a GResizeCorner widget.Andreas Kling
This widget is automatically included in GStatusBar, but can be added in any other place, too. When clicked (with the left button), it initiates a window resize (using a WM request.) In this patch I also fixed up some issues with override cursors being cleared after the WindowServer finishes a drag or resize.
2019-05-01WindowServer: Spawn a secondary thread to decode wallpapers.Andreas Kling
The threading API's are not very mature, so this code looks a bit crufty but it does take the load off the WindowServer main thread when changing wallpapers. :^)
2019-04-23WindowServer+TaskBar: Add a taskbar window button popup menu.Andreas Kling
This patch only hooks up the minimize and unminimize actions.
2019-04-23WindowServer: WSButton should be more discerning with MouseUp/MouseMove.Andreas Kling
2019-04-20WindowServer: Introduce a WM event mask so Taskbar can ignore window rects.Andreas Kling
Taskbar was waking up to do nothing every time a window rect changed.
2019-04-18WindowServer: Broadcast window icons to newly joined WM listener clients.Andreas Kling
2019-04-18WindowServer: Generate a separate WM event for window icon changes.Andreas Kling
2019-04-14WindowServer: Rename WSMessage* => WSEvent*.Andreas Kling
Since I'm on a roll here, I'll just rename WSMessageFoo to WSEventFoo now that these inherit from CEventFoo anyway.
2019-04-14WindowServer: Port WindowServer to LibCore.Andreas Kling
This was pretty straightforward thanks to the work I did separating out LibCore from LibGUI already. :^) - WSMessageLoop now inherits from CEventLoop. - WSMessage now inherits from CEvent. - WSMessageReceiver goes away. Now there is only one event loop in Serenity. Very nice!
2019-04-14WindowServer: Move the CPU monitor thingy to its own class.Andreas Kling
2019-04-14AK: Improve smart pointer ergonomics a bit.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-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: Display the window geometry while it's being moved or resized.Andreas Kling
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-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: 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-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-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-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: Make various function arguments const.Andreas Kling
2019-03-31WindowServer: Show a special "move" cursor when dragging windows around.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.
2019-03-24WindowServer: Moving a window to front should always activate it.Andreas Kling
So instead of having move_to_front() + set_active_window(), let's have move_to_front_and_make_active().
2019-03-24WindowServer: Factor out ongoing drag/resize from process_mouse_event().Andreas Kling
The mouse event processing code is getting unwieldy. Break out two huge chunks into separate functions so the code becomes easier to work with.
2019-03-21WindowServer: Support PNG wallpapers.Andreas Kling
Fix up /bin/pape so it tells the WindowServer which wallpaper file to use.
2019-03-20Move WindowServer into Servers.Andreas Kling