aboutsummaryrefslogtreecommitdiff
path: root/include/sway/tree
AgeCommit message (Collapse)Author
2022-09-19sway: Add non-desktop-output typeAlex Maese
Currently, when encountering a non-desktop display, sway offers the output for leasing and returns without storing it in a sway specific output type like `struct sway_output`. Additionally, running `swaymsg -t get_outputs` doesn't show non-desktop outputs. This commit stores the non-desktop outputs into a struct called `sway_output_non_desktop`, and adds them to a list on `sway_root`
2022-05-27xdg-shell: schedule a configure on maximize requestKirill Primak
This commit reverts 03879290dbee26127f6867ef60bc2a7f9a6c8c5f and fc84bcb7fb0ffa29b1f9bed287762241a3473803.
2022-02-22Remove some erroneous apostrophes in commentsThomas Hebb
2022-02-07xdg-shell: use wlr_xdg_popup in sway_xdg_popupSimon Ser
Improved type safety.
2022-02-07xdg-shell: use wlr_xdg_toplevel in sway_viewSimon Ser
Improved type safety. Closes: https://github.com/swaywm/sway/issues/6813
2022-01-31xwayland: listen to `request_activate` eventTuomas Yrjölä
When REAPER submenu is closed `XCB_CLIENT_MESSAGE` with type `NET_ACTIVE_WINDOW` is sent to set focus to parent menu. Closes: https://github.com/swaywm/sway/issues/6324
2022-01-13Upgrade for wlroots surface refactoringSimon Ser
See [1] for details. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3412
2021-12-10Add focused_tab_titleVsevolod
2021-11-25sway: replace noop_output by fallback_outputSimon Zeni
wlroots removed the support for the noop backend. Instead we rely on the headless backend to provide the fallback output.
2021-09-21xdg-shell: remove unused request_maximize listenerKirill Primak
2021-09-08view: fix child position calcKirill Primak
Previously, the position was calculated incorrectly for nested subsurfaces.
2021-08-26Use fixed titlebar heightsHugo Osvaldo Barrera
Use fixed titlebar heights. The default height is calculated based on font metrics for the configured font and current locale. Some testing with titles with emoji and CJK characters (which are substantially higher in my setup) shows that the titlebars retain their initial value, text does shift up or down, and all titlebars always remain aligned. Also drop some also now-unecessary title_height calculations. Makes also needed to be updated, since they should be positioned with the same rules.
2021-08-12Document view_mapSimon Ser
2021-07-27view: remove reference to wlr_wl_shell_surfaceSimon Zeni
2021-07-07Update wlr_box includesSimon Ser
Update for the breaking change in [1]. [1]: https://github.com/swaywm/wlroots/pull/3011
2021-06-22Revert "Add workspace {prev,next}_on_output --create"Ragnar Groot Koerkamp
This reverts commit 487c83f0de9ca2a7650ad636eed6fd694ddcb82e. The --create flag is undocumented, not in i3, and at least partially broken (#5913), so this removes the feature.
2021-06-18Move auto_back_and_forth logic out of workspace_switchRagnar Groot Koerkamp
This extracts the code to a separate workspace_auto_back_and_forth function. It also removes the bool argument by adding an extra if statement at the call site, and repurposes the no_auto_back_and_forth variable to auto_back_and_forth for simpler understanding.
2021-02-25focus: beyond fullscreen when focused explicitlylbonn
When issuing a focus command on a specific container, users expect to proceed it even if is hidden by a fullscreen window. This matches the behavior of i3.
2021-02-25render: handle containers without output when rendering titlesQuantum
In e0a94bee8da3271f942c0881ee18a7e2d4138063, it was believed that if the container is being rendered, it must have an output. This turned out not to be the case. When rendering a container, all its children are rendered, even if the children is positioned off screen and thus not having any output. This is the cause of the crash in #6061. This commit introduces a null-check, which fixes #6061.
2021-02-22container: Add container_is_current_floatingKenny Levinsen
Needed to check if containers are currently floating from render code, as container_is_floating checks pending state.
2021-02-16container: Move pending state to state structKenny Levinsen
Pending state is currently inlined directly in the container struct, while the current state is in a state struct. A side-effect of this is that it is not immediately obvious that pending double-buffered state is accessed, nor is it obvious what state is double-buffered. Instead, use the state struct for both current and pending.
2021-02-09view: Read geometry directly in view_update_sizeKenny Levinsen
2021-02-09transaction: Move centering to view_center_surfaceKenny Levinsen
This will allow us to reuse it for centering elsewhere.
2021-01-12Switch to wlr_xdg_surface_for_each_popup_surfaceSimon Ser
Instead of calling wlr_xdg_surface_for_each_popup and then wlr_surface_for_each_surface, use the new for_each_popup_surface helper introduced in [1] that does it in one go. [1]: https://github.com/swaywm/wlroots/pull/2609
2020-12-20introduce workspace_squashRonan Pigott
workspace_squash is container_flatten in the reverse direction. Instead of eliminating redundant splits that are parents of the target container, it eliminates pairs of redundant H/V splits that are children of the workspace. Splits are redundant if a con and its grandchild have the same layout, and the immediate child has the opposite split. For example, layouts are transformed like: H[V[H[app1 app2]] app3] -> H[app1 app2 app3] i3 uses this operation to simplify the tree after moving heavily nested containers to a higher level in the tree via an orthogonal move.
2020-12-20Change workspace_layout to match i3 behaviorRonan Pigott
In i3, the workspace_layout command does not affect the workspace layout. Instead, new workspace level containers are wrapped in the desired layout and the workspace layout always defaults to the output orientation.
2020-11-11tree/container: introduce `container_is_sticky[_or_child]` functionsTudor Brindus
To query whether a container is sticky, checking `con->is_sticky` is insufficient. `container_is_floating_or_child` must also return true; this led to a lot of repetition. This commit introduces `container_is_sticky[_or_child]` functions, and switches all stickiness checks to use them. (Including ones where the container is already known to be floating, for consistency.)
2020-10-27output: evacuate sticky containers only if new output has a workspacemwenzkowski
Sticky floating containers on an otherwise empty workspace can only be evacuated if the new output has an active workspace. The noop output may not have one and in that case we have to move the whole workspace to the new output.
2020-10-18xwayland: listen to `set_geometry` eventTudor Brindus
Closes #5735, refs #3007. This makes the "Search everywhere" dialog in JetBrains IDEs movable.
2020-10-10xwayland: support views that change override-redirect statusTobias Langendorf
2020-08-05view: remove foreign toplevel listeners on destroyRonan Pigott
2020-08-05view: implement foreign toplevel fullscreen requestRonan Pigott
2020-07-22Fix X11 clients getting stuck minimizedTobias Langendorf
Usually it should be enough to simply not grant a client's minimize request, however some applications (Steam, fullscreen games in Wine) don't wait for the compositor and minimize anyway, getting them stuck in an unrecoverable state. Restoring them immediately lead to heavy flickering when unfocused on my test application (Earth Defense Force 5 via Steam), so it's preferable to grant their request without actually minimizing and then restoring them once they are in focus again.
2020-07-13input: implement xdg_toplevel interactive resize hintsRonan Pigott
2020-07-01commands/move: unwrap workspace container on move to new workspaceTudor Brindus
If moving e.g. `T[app app]` into a new workspace with `workspace_layout tabbed`, then post-move the tree in that workspace will be `T[T[app app]]`. This still happens with horizontal or vertical workspace layout, but is less visible since those containers have no decorations. Fixes #5426.
2020-06-23Implement wlr-foreign-toplevel-management-v1Drew DeVault
2020-06-17Add support for viewporterSimon Ser
Depends on [1]. [1]: https://github.com/swaywm/wlroots/pull/2092
2020-06-08tree/view: fix smart gaps when ancestor container is tabbed or stackedTudor Brindus
Fixes #5406.
2020-06-07tree/container: introduce `container_toplevel_ancestor` helperTudor Brindus
This allows us to not have to explicitly write the same while loop everywhere.
2020-06-05Save transform during transactionKalyan Sriram
Closes: https://github.com/swaywm/sway/issues/5412
2020-06-03container: Remove useless surface dimensionsKenny Levinsen
The adjustments to resize logic left them unnecessary.
2020-06-03view: Save all buffers associated with viewKenny Levinsen
During the execution of a resize transaction, the buffer associated with a view's surface is saved and reused until the client acknowledges the resulting configure event. However, only one the main buffer of the main surface was stored and rendered, meaning that subsurfaces disappear during resize. Iterate over all, store and render buffers from all surfaces in the view to ensure that correct rendering is preserved.
2020-05-29Add views idle inhibition status in get_tree outputDamien Tardy-Panis
Fixes #5286
2020-05-21Fix typos in commentsMartin Michlmayr
2020-05-13commands: Add per-view shortcuts_inhibitor commandMichael Weiser
Add a separate per-view shortcuts_inhibitor command that can be used with criteria to override the per-seat defaults. This allows to e.g. disable shortcuts inhibiting globally but enable it for specific, known-good virtualization and remote desktop software or, alternatively, to blacklist that one slightly broken piece of software that just doesn't seem to get it right but insists on trying. Add a flag to sway_view and handling logic in the input manager that respects that flag if configured but falls back to per-seat config otherwise. Add the actual command but with just enable and disable subcommands since there's no value in duplicating the per-seat activate/deactivate/toggle logic here. Split the inhibitor retrieval helper in two so we can use the backend half in the command to retrieve inhibitors for a specific surface and not just the currently focused one. Extend the manual page with documentation of the command and references to its per-seat sibling and usefulness with criteria. Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
2020-03-06Use wlr_client_bufferSimon Ser
Update for breaking changes in [1]. [1]: https://github.com/swaywm/wlroots/pull/2043
2020-01-16Fix crash when showing scratchpad hidden split containersRonan Pigott
2020-01-15Revert "Make all the container dimensions integers"Simon Ser
This reverts commit 79c5f5ba1245a8c3d575770419a6501447e78919. Fixes: https://github.com/swaywm/sway/issues/4908
2020-01-09view: remove workspace pid mapping for assignsBrian Ashworth
If a view is mapped to a workspace using an assign, the pid should still be removed from the pid mapping list. This prevents child processes from matching against it and mapping a view to a likely undesired workspace.
2020-01-01Make all the container dimensions integersPedro Côrte-Real
Containers are always fixed to the pixel grid so position and size them with integers instead of doubles. Functionally this should be no different since rounding down is already being done on things like layout. But it makes it clear what the intention is and avoids bugs where fractional pixels are used. The translating and moving code is still using doubles because the cursors can have fractional pixels and thus the code is plumbed that way. But that could also probably be changed easily by doing the integer conversions earlier and plumbing with int.