aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dwyer <ryandwyer1@gmail.com>2018-08-31 21:34:16 +1000
committerRyan Dwyer <ryandwyer1@gmail.com>2018-08-31 21:39:28 +1000
commitdce549c5378d5d572b8996a7873629df63c45259 (patch)
treebbabf1993a27b2c4a06813b945830384dee9c97f
parentde9e80459a93598bdaf6a68485215ce597131d88 (diff)
Don't send never-ending transactions when a focused layer surface commits
This moves the arrange_windows call into the arrange_layers function, where we know the output actually needs to be arranged. Additionally, we shouldn't set focus to the parent of an unknown container type, because the parent may be an output and this causes a crash because outputs can't have direct focus. Fixes #2543
-rw-r--r--sway/desktop/layer_shell.c3
-rw-r--r--sway/input/seat.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/sway/desktop/layer_shell.c b/sway/desktop/layer_shell.c
index 1fae5db2..a4f7f928 100644
--- a/sway/desktop/layer_shell.c
+++ b/sway/desktop/layer_shell.c
@@ -176,7 +176,7 @@ void arrange_layers(struct sway_output *output) {
sizeof(struct wlr_box)) != 0) {
wlr_log(WLR_DEBUG, "Usable area changed, rearranging output");
memcpy(&output->usable_area, &usable_area, sizeof(struct wlr_box));
- container_set_dirty(output->swayc);
+ arrange_output(output->swayc);
}
// Arrange non-exlusive surfaces from top->bottom
@@ -247,7 +247,6 @@ static void handle_surface_commit(struct wl_listener *listener, void *data) {
layer_surface->surface, false);
}
- arrange_windows(output->swayc);
transaction_commit_dirty();
}
diff --git a/sway/input/seat.c b/sway/input/seat.c
index 36e1d232..5af9e88a 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -779,7 +779,7 @@ void seat_set_focus_layer(struct sway_seat *seat,
wlr_log(WLR_DEBUG, "Returning focus to %p %s '%s'", previous,
container_type_to_str(previous->type), previous->name);
// Hack to get seat to re-focus the return value of get_focus
- seat_set_focus(seat, previous->parent);
+ seat_set_focus(seat, NULL);
seat_set_focus(seat, previous);
}
return;