Merge branch 'fix-floating-move'
This commit is contained in:
commit
b9053c6f8f
31
src/con.c
31
src/con.c
|
@ -608,29 +608,30 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, bool
|
||||||
next = ws;
|
next = ws;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If moving to a visible workspace, call show so it can be considered
|
if (source_output != dest_output) {
|
||||||
* focused. Must do before attaching because workspace_show checks to see
|
/* Take the relative coordinates of the current output, then add them
|
||||||
* if focused container is in its area. */
|
* to the coordinate space of the correct output */
|
||||||
if (source_output != dest_output &&
|
|
||||||
workspace_is_visible(workspace)) {
|
|
||||||
workspace_show(workspace->name);
|
|
||||||
|
|
||||||
if (fix_coordinates && con->type == CT_FLOATING_CON) {
|
if (fix_coordinates && con->type == CT_FLOATING_CON) {
|
||||||
DLOG("Floating window, fixing coordinates\n");
|
DLOG("Floating window, fixing coordinates\n");
|
||||||
/* Take the relative coordinates of the current output, then add them
|
|
||||||
* to the coordinate space of the correct output */
|
|
||||||
uint32_t rel_x = (con->rect.x - source_output->rect.x);
|
uint32_t rel_x = (con->rect.x - source_output->rect.x);
|
||||||
uint32_t rel_y = (con->rect.y - source_output->rect.y);
|
uint32_t rel_y = (con->rect.y - source_output->rect.y);
|
||||||
con->rect.x = dest_output->rect.x + rel_x;
|
con->rect.x = dest_output->rect.x + rel_x;
|
||||||
con->rect.y = dest_output->rect.y + rel_y;
|
con->rect.y = dest_output->rect.y + rel_y;
|
||||||
} else DLOG("Not fixing coordinates, fix_coordinates flag = %d\n", fix_coordinates);
|
} else DLOG("Not fixing coordinates, fix_coordinates flag = %d\n", fix_coordinates);
|
||||||
|
|
||||||
/* Don’t warp if told so (when dragging floating windows with the
|
/* If moving to a visible workspace, call show so it can be considered
|
||||||
* mouse for example) */
|
* focused. Must do before attaching because workspace_show checks to see
|
||||||
if (dont_warp)
|
* if focused container is in its area. */
|
||||||
x_set_warp_to(NULL);
|
if (workspace_is_visible(workspace)) {
|
||||||
else
|
workspace_show(workspace->name);
|
||||||
x_set_warp_to(&(con->rect));
|
|
||||||
|
/* Don’t warp if told so (when dragging floating windows with the
|
||||||
|
* mouse for example) */
|
||||||
|
if (dont_warp)
|
||||||
|
x_set_warp_to(NULL);
|
||||||
|
else
|
||||||
|
x_set_warp_to(&(con->rect));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DLOG("Re-attaching container to %p / %s\n", next, next->name);
|
DLOG("Re-attaching container to %p / %s\n", next, next->name);
|
||||||
|
|
Loading…
Reference in New Issue