summaryrefslogtreecommitdiff
path: root/Userland/Services/WindowServer/WindowStack.h
AgeCommit message (Collapse)Author
2021-07-08WindowServer: Add missing minimize check to highlighted window callbacknetworkException
This patch adds a missing minimize check for highligted windows in WindowStack::for_each_visible_window_of_type_from_front_to_back(). Minimized windows should not be treated as visible in this context. Previously, iterating through each visible Window when recomputing occlusions in the Compositor would cause a crash if a highlighted Window is also minimized at the same time. As the WindowSwitcher currently highligts Windows even when they are minimized, opening it while any Window is minimized would cause WindowServer to crash.
2021-07-07WindowServer: Allow windows to be pinnable (always on top)Andres Crucitti
This patch adds the concept of a window being "Pinnable" (always drawn on top of other windows). This can be toggled through a new checkable action in the top left corner's window menu.
2021-07-03WindowServer: Add API to change virtual desktop settingsTom
This also adds the ability to query how many virtual desktops are set up, and for the Taskbar to be notified when the active virtual desktop has changed.
2021-07-03WindowServer: Add basic virtual desktop supportTom
This creates a 2-dimensional array of WindowStack instances, one for each virtual desktop. The main desktop 0,0 is the main desktop, which is the desktop used for all stationary windows (e.g. taskbar, desktop). When adding windows to a desktop, stationary windows are always added to the main desktop. When composing the desktop, there are usually two WindowStacks involved. For stationary windows, the main desktop will be traversed, and for everything else the current virtual desktop will be iterated. Iteration is interweaved to preserve the correct order. During the transition animation, two WindowStacks will be iterated at the same time.
2021-06-18WindowServer: Don't include frame when determining hovered windowAndreas Kling
We only consider a window "hovered" if its *content area* is hovered.
2021-06-18WindowServer: Add WindowStack::window_at() and use it a bunchAndreas Kling
This performs a hit test on the window stack to find the window under a given cursor position.
2021-06-18WindowServer: Allow each WindowStack to have an active windowAndreas Kling
A window with an inner stack needs to keep track of which inner window is active.
2021-06-18WindowServer: Add WindowStack conceptAndreas Kling
This patch moves the window stack out of WindowManager and into its own WindowStack class. A WindowStack is an ordered list of windows with an optional highlight window. The highlight window mechanism is used during Super+Tab window switching to temporarily bring a window to the front. This is mostly mechanical, just moving the code to its own class.