diff options
Diffstat (limited to 'sway/tree')
-rw-r--r-- | sway/tree/container.c | 15 | ||||
-rw-r--r-- | sway/tree/root.c | 7 | ||||
-rw-r--r-- | sway/tree/view.c | 5 |
3 files changed, 15 insertions, 12 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c index 1cf5c8e7..e20e44d4 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -1156,11 +1156,11 @@ enum sway_container_layout container_current_parent_layout( return con->current.workspace->current.layout; } -list_t *container_get_siblings(const struct sway_container *container) { +list_t *container_get_siblings(struct sway_container *container) { if (container->parent) { return container->parent->children; } - if (!container->workspace) { + if (container_is_scratchpad_hidden(container)) { return NULL; } if (list_find(container->workspace->tiling, container) != -1) { @@ -1169,7 +1169,7 @@ list_t *container_get_siblings(const struct sway_container *container) { return container->workspace->floating; } -int container_sibling_index(const struct sway_container *child) { +int container_sibling_index(struct sway_container *child) { return list_find(container_get_siblings(child), child); } @@ -1181,7 +1181,10 @@ list_t *container_get_current_siblings(struct sway_container *container) { } void container_handle_fullscreen_reparent(struct sway_container *con) { - if (con->fullscreen_mode != FULLSCREEN_WORKSPACE || !con->workspace || + if (!sway_assert(con->workspace, "Expected con to have a workspace")) { + return; + } + if (con->fullscreen_mode != FULLSCREEN_WORKSPACE || con->workspace->fullscreen == con) { return; } @@ -1460,3 +1463,7 @@ void container_raise_floating(struct sway_container *con) { node_set_dirty(&floater->workspace->node); } } + +bool container_is_scratchpad_hidden(struct sway_container *con) { + return con->scratchpad && !con->workspace; +} diff --git a/sway/tree/root.c b/sway/tree/root.c index 476e47a3..6e13d6ce 100644 --- a/sway/tree/root.c +++ b/sway/tree/root.c @@ -310,10 +310,7 @@ void root_for_each_container(void (*f)(struct sway_container *con, void *data), // Scratchpad for (int i = 0; i < root->scratchpad->length; ++i) { struct sway_container *container = root->scratchpad->items[i]; - // If the container has a workspace then it's visible on a workspace - // and will have been iterated in the previous for loop. So we only - // iterate the hidden scratchpad containers here. - if (!container->workspace) { + if (container_is_scratchpad_hidden(container)) { f(container, data); container_for_each_child(container, f, data); } @@ -362,7 +359,7 @@ struct sway_container *root_find_container( // Scratchpad for (int i = 0; i < root->scratchpad->length; ++i) { struct sway_container *container = root->scratchpad->items[i]; - if (!container->workspace) { + if (container_is_scratchpad_hidden(container)) { if (test(container, data)) { return container; } diff --git a/sway/tree/view.c b/sway/tree/view.c index 9ccb2a31..612cf96a 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -197,8 +197,7 @@ static bool gaps_to_edge(struct sway_view *view) { void view_autoconfigure(struct sway_view *view) { struct sway_container *con = view->container; - if (!con->workspace) { - // Hidden in the scratchpad + if (container_is_scratchpad_hidden(con)) { return; } struct sway_output *output = con->workspace->output; @@ -1054,7 +1053,7 @@ void view_set_urgent(struct sway_view *view, bool enable) { ipc_event_window(view->container, "urgent"); - if (view->container->workspace) { + if (!container_is_scratchpad_hidden(view->container)) { workspace_detect_urgent(view->container->workspace); } } |