Merge pull request #2694 from RyanDwyer/fix-sticky-jumping-on-switch

Prevent sticky containers from jumping on workspace switch
This commit is contained in:
emersion 2018-09-23 09:42:07 +02:00 committed by GitHub
commit 4bc327a021
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 5 deletions

View file

@ -186,6 +186,7 @@ void arrange_workspace(struct sway_workspace *workspace) {
area->width, area->height, area->x, area->y); area->width, area->height, area->x, area->y);
workspace_remove_gaps(workspace); workspace_remove_gaps(workspace);
bool first_arrange = workspace->width == 0 && workspace->height == 0;
double prev_x = workspace->x; double prev_x = workspace->x;
double prev_y = workspace->y; double prev_y = workspace->y;
workspace->width = area->width; workspace->width = area->width;
@ -196,7 +197,7 @@ void arrange_workspace(struct sway_workspace *workspace) {
// Adjust any floating containers // Adjust any floating containers
double diff_x = workspace->x - prev_x; double diff_x = workspace->x - prev_x;
double diff_y = workspace->y - prev_y; double diff_y = workspace->y - prev_y;
if (diff_x != 0 || diff_y != 0) { if (!first_arrange && (diff_x != 0 || diff_y != 0)) {
for (int i = 0; i < workspace->floating->length; ++i) { for (int i = 0; i < workspace->floating->length; ++i) {
struct sway_container *floater = workspace->floating->items[i]; struct sway_container *floater = workspace->floating->items[i];
container_floating_translate(floater, diff_x, diff_y); container_floating_translate(floater, diff_x, diff_y);

View file

@ -54,10 +54,6 @@ struct sway_workspace *workspace_create(struct sway_output *output,
return NULL; return NULL;
} }
node_init(&ws->node, N_WORKSPACE, ws); node_init(&ws->node, N_WORKSPACE, ws);
ws->x = output->lx;
ws->y = output->ly;
ws->width = output->width;
ws->height = output->height;
ws->name = name ? strdup(name) : NULL; ws->name = name ? strdup(name) : NULL;
ws->prev_split_layout = L_NONE; ws->prev_split_layout = L_NONE;
ws->layout = output_get_default_layout(output); ws->layout = output_get_default_layout(output);