summaryrefslogtreecommitdiff
path: root/Userland/Services/WindowServer/WindowSwitcher.cpp
AgeCommit message (Collapse)Author
2021-07-08WindowServer: Remove rect behind window icon in WindowSwitchernetworkException
This patch removes the background behind window icons in the WindowSwitcher which looked like it was being rendered incorrectly (without alpha) previously.
2021-07-03WindowServer: Rename Window::outer_stack -> Window::window_stackTom
Also, make it return a reference as aside from only three special situations (creating, destroying, and moving a window between stacks) a window should always be on a window stack. Any access during those brief situations would be a bug, so we should VERIFY this.
2021-07-03WindowServer: Show window's desktop in window switcher if neededTom
If there are windows on more than one desktop then the window switcher should show on which one they are located.
2021-07-03WindowServer: Support two window switcher modes: all or current desktopTom
When using the Super+Tab hotkey then all windows will be displayed, and we will switch to another virtual desktop if needed. When using the Alt+Tab hotkey then only the windows on the current desktop will be displayed.
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-20WindowServer: Add initial support for rendering on multiple screensTom
This allows WindowServer to use multiple framebuffer devices and compose the desktop with any arbitrary layout. Currently, it is assumed that it is configured contiguous and non-overlapping, but this should eventually be enforced. To make rendering efficient, each window now also tracks on which screens it needs to be rendered. This way we don't have to iterate all the windows for each screen but instead use the same rendering loop and then only render to the screen (or screens) that the window actually uses.
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.
2021-05-10WindowServer: Compute final window title before passing to WM clientsAndreas Kling
We were not substituting the window modified marker ("[*]") in the title strings we were sending to WM clients. This caused the Taskbar to show pre-substitution window titles for the Text Editor application. This patch moves the window title resolution to Window::compute_title() which is then used throughout.
2021-04-22Everything: Move to SPDX license identifiers in all files.Brian Gianforcaro
SPDX License Identifiers are a more compact / standardized way of representing file license information. See: https://spdx.dev/resources/use/#identifiers This was done with the `ambr` search and replace tool. ambr --no-parent-ignore --key-from-file --rep-from-file key.txt rep.txt *
2021-04-13Everywhere: It's now "Foobar", not "FooBar", and not "foo bar"Andreas Kling
I hereby declare these to be full nouns that we don't split, neither by space, nor by underscore: - Breadcrumbbar - Coolbar - Menubar - Progressbar - Scrollbar - Statusbar - Taskbar - Toolbar This patch makes everything consistent by replacing every other variant of these with the proper one. :^)
2021-03-11Everywhere: Rename "logo" key to "super" keyAndreas Kling
This seems to be the most common way to refer to this key, so let's call it what people actually call it.
2021-02-23Everywhere: Rename ASSERT => VERIFYAndreas Kling
(...and ASSERT_NOT_REACHED => VERIFY_NOT_REACHED) Since all of these checks are done in release builds as well, let's rename them to VERIFY to prevent confusion, as everyone is used to assertions being compiled out in release. We can introduce a new ASSERT macro that is specifically for debug checks, but I'm doing this wholesale conversion first since we've accumulated thousands of these already, and it's not immediately obvious which ones are suitable for ASSERT.
2021-01-12Services: Move to Userland/Services/Andreas Kling