aboutsummaryrefslogtreecommitdiff
path: root/sway/tree
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree')
-rw-r--r--sway/tree/container.c15
-rw-r--r--sway/tree/root.c7
-rw-r--r--sway/tree/view.c5
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);
}
}