diff options
author | emersion <contact@emersion.fr> | 2018-09-23 09:42:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-23 09:42:07 +0200 |
commit | 4bc327a021121850d0c02d15ef9e784ff0f797bd (patch) | |
tree | 0b2c5fe7f09257660116f618f9e09d0d12e32888 | |
parent | Merge pull request #2686 from RyanDwyer/tab-scrolling (diff) | |
parent | Prevent sticky containers from jumping on workspace switch (diff) | |
download | sway-4bc327a021121850d0c02d15ef9e784ff0f797bd.tar.gz sway-4bc327a021121850d0c02d15ef9e784ff0f797bd.tar.zst sway-4bc327a021121850d0c02d15ef9e784ff0f797bd.zip |
Merge pull request #2694 from RyanDwyer/fix-sticky-jumping-on-switch
Prevent sticky containers from jumping on workspace switch
-rw-r--r-- | sway/tree/arrange.c | 3 | ||||
-rw-r--r-- | sway/tree/workspace.c | 4 |
2 files changed, 2 insertions, 5 deletions
diff --git a/sway/tree/arrange.c b/sway/tree/arrange.c index d50be25d..373460a2 100644 --- a/sway/tree/arrange.c +++ b/sway/tree/arrange.c | |||
@@ -186,6 +186,7 @@ void arrange_workspace(struct sway_workspace *workspace) { | |||
186 | area->width, area->height, area->x, area->y); | 186 | area->width, area->height, area->x, area->y); |
187 | workspace_remove_gaps(workspace); | 187 | workspace_remove_gaps(workspace); |
188 | 188 | ||
189 | bool first_arrange = workspace->width == 0 && workspace->height == 0; | ||
189 | double prev_x = workspace->x; | 190 | double prev_x = workspace->x; |
190 | double prev_y = workspace->y; | 191 | double prev_y = workspace->y; |
191 | workspace->width = area->width; | 192 | workspace->width = area->width; |
@@ -196,7 +197,7 @@ void arrange_workspace(struct sway_workspace *workspace) { | |||
196 | // Adjust any floating containers | 197 | // Adjust any floating containers |
197 | double diff_x = workspace->x - prev_x; | 198 | double diff_x = workspace->x - prev_x; |
198 | double diff_y = workspace->y - prev_y; | 199 | double diff_y = workspace->y - prev_y; |
199 | if (diff_x != 0 || diff_y != 0) { | 200 | if (!first_arrange && (diff_x != 0 || diff_y != 0)) { |
200 | for (int i = 0; i < workspace->floating->length; ++i) { | 201 | for (int i = 0; i < workspace->floating->length; ++i) { |
201 | struct sway_container *floater = workspace->floating->items[i]; | 202 | struct sway_container *floater = workspace->floating->items[i]; |
202 | container_floating_translate(floater, diff_x, diff_y); | 203 | container_floating_translate(floater, diff_x, diff_y); |
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index b0c440c1..16031e87 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c | |||
@@ -54,10 +54,6 @@ struct sway_workspace *workspace_create(struct sway_output *output, | |||
54 | return NULL; | 54 | return NULL; |
55 | } | 55 | } |
56 | node_init(&ws->node, N_WORKSPACE, ws); | 56 | node_init(&ws->node, N_WORKSPACE, ws); |
57 | ws->x = output->lx; | ||
58 | ws->y = output->ly; | ||
59 | ws->width = output->width; | ||
60 | ws->height = output->height; | ||
61 | ws->name = name ? strdup(name) : NULL; | 57 | ws->name = name ? strdup(name) : NULL; |
62 | ws->prev_split_layout = L_NONE; | 58 | ws->prev_split_layout = L_NONE; |
63 | ws->layout = output_get_default_layout(output); | 59 | ws->layout = output_get_default_layout(output); |