Merge branch 'fix-floating-move'

This commit is contained in:
Michael Stapelberg 2011-09-18 00:40:39 +01:00
commit b9053c6f8f
1 changed files with 16 additions and 15 deletions

View File

@ -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);
/* Dont 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));
/* Dont 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);