Compare commits

...

2 commits

Author SHA1 Message Date
bonsaiiV
f50e307227
sway/commands/layout: flatten parent once
Applying layout changes to the parent of the parent, in case the parent only has a single child, stops the creation of a chain of single child containers.

Closes: https://github.com/swaywm/sway/issues/7945
2025-08-03 15:25:40 +02:00
Tomasz Buczyński
87fbcf0574 Add cursor->hidden check to handle_rebase
Fixes #6245
2025-08-03 15:01:21 +02:00
2 changed files with 10 additions and 1 deletions

View file

@ -134,6 +134,15 @@ struct cmd_results *cmd_layout(int argc, char **argv) {
// Operate on parent container, like i3.
if (container) {
container = container->pending.parent;
// If parent has only a singe child operate on its parent and
// flatten once, like i3
if (container && container->pending.children->length == 1) {
struct sway_container *child = container->pending.children->items[0];
struct sway_container *parent = container->pending.parent;
container_replace(container, child);
container_begin_destroy(container);
container = parent;
}
}
// We could be working with a container OR a workspace. These are different

View file

@ -1111,7 +1111,7 @@ static void handle_rebase(struct sway_seat *seat, uint32_t time_msec) {
cursor->cursor->x, cursor->cursor->y, &surface, &sx, &sy);
if (surface) {
if (seat_is_input_allowed(seat, surface)) {
if (seat_is_input_allowed(seat, surface) && !cursor->hidden) {
wlr_seat_pointer_notify_enter(seat->wlr_seat, surface, sx, sy);
wlr_seat_pointer_notify_motion(seat->wlr_seat, time_msec, sx, sy);
}