sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 82d02ce7828b7cedd7bb548b982b56d6d6f672f3
parent 854497b242b78f14f990a04d2c1fed14b03ee33b
Author: Josh Shone <josh.shone@gmail.com>
Date:   Fri, 27 Mar 2020 10:56:47 +0100

Fix hit test for floaters that cross outputs

In the case of multiple overlapping floating windows, this commit fixes an issue where the wrong window would be focused in response to a cursor if one of the windows came from a different output (overhanging).

Diffstat:
Msway/tree/container.c | 5++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/sway/tree/container.c b/sway/tree/container.c @@ -289,7 +289,10 @@ static struct sway_container *container_at_linear(struct sway_node *parent, static struct sway_container *floating_container_at(double lx, double ly, struct wlr_surface **surface, double *sx, double *sy) { - for (int i = 0; i < root->outputs->length; ++i) { + // For outputs with floating containers that overhang the output bounds, + // those at the end of the output list appear on top of floating + // containers from other outputs, so iterate the list in reverse. + for (int i = root->outputs->length - 1; i >= 0; --i) { struct sway_output *output = root->outputs->items[i]; for (int j = 0; j < output->workspaces->length; ++j) { struct sway_workspace *ws = output->workspaces->items[j];