|
|
@ -883,7 +883,7 @@ static struct sway_container *sway_output_from_wlr(struct wlr_output *output) {
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static struct sway_container *container_get_in_direction_naive(
|
|
|
|
struct sway_container *container_get_in_direction(
|
|
|
|
struct sway_container *container, struct sway_seat *seat,
|
|
|
|
struct sway_container *container, struct sway_seat *seat,
|
|
|
|
enum movement_direction dir) {
|
|
|
|
enum movement_direction dir) {
|
|
|
|
struct sway_container *parent = container->parent;
|
|
|
|
struct sway_container *parent = container->parent;
|
|
|
@ -936,6 +936,14 @@ static struct sway_container *container_get_in_direction_naive(
|
|
|
|
if (next == NULL) {
|
|
|
|
if (next == NULL) {
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
struct sway_container *next_workspace = next;
|
|
|
|
|
|
|
|
if (next_workspace->type != C_WORKSPACE) {
|
|
|
|
|
|
|
|
next_workspace = container_parent(next_workspace, C_WORKSPACE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
sway_assert(next_workspace, "Next container has no workspace");
|
|
|
|
|
|
|
|
if (next_workspace->sway_workspace->fullscreen) {
|
|
|
|
|
|
|
|
return next_workspace->sway_workspace->fullscreen->swayc;
|
|
|
|
|
|
|
|
}
|
|
|
|
if (next->children && next->children->length) {
|
|
|
|
if (next->children && next->children->length) {
|
|
|
|
// TODO consider floating children as well
|
|
|
|
// TODO consider floating children as well
|
|
|
|
return seat_get_focus_inactive_view(seat, next);
|
|
|
|
return seat_get_focus_inactive_view(seat, next);
|
|
|
@ -992,28 +1000,6 @@ static struct sway_container *container_get_in_direction_naive(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
struct sway_container *container_get_in_direction(
|
|
|
|
|
|
|
|
struct sway_container *container, struct sway_seat *seat,
|
|
|
|
|
|
|
|
enum movement_direction dir) {
|
|
|
|
|
|
|
|
struct sway_container *result = container_get_in_direction_naive(container,
|
|
|
|
|
|
|
|
seat, dir);
|
|
|
|
|
|
|
|
if (!result) {
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
struct sway_container *old_workspace = container;
|
|
|
|
|
|
|
|
if (old_workspace->type != C_WORKSPACE) {
|
|
|
|
|
|
|
|
old_workspace = container_parent(old_workspace, C_WORKSPACE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
struct sway_container *new_workspace = result;
|
|
|
|
|
|
|
|
if (new_workspace->type != C_WORKSPACE) {
|
|
|
|
|
|
|
|
new_workspace = container_parent(new_workspace, C_WORKSPACE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (old_workspace != new_workspace && new_workspace->sway_workspace->fullscreen) {
|
|
|
|
|
|
|
|
result = new_workspace->sway_workspace->fullscreen->swayc;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct sway_container *container_replace_child(struct sway_container *child,
|
|
|
|
struct sway_container *container_replace_child(struct sway_container *child,
|
|
|
|
struct sway_container *new_child) {
|
|
|
|
struct sway_container *new_child) {
|
|
|
|
struct sway_container *parent = child->parent;
|
|
|
|
struct sway_container *parent = child->parent;
|
|
|
|