Bugfix: Correctly do boundary checking/moving to other workspaces when moving floating clients via keyboard (Thanks sasha)

This commit is contained in:
Michael Stapelberg
2010-02-12 13:06:59 +01:00
parent 0b6b8e8380
commit 87f8c501da
3 changed files with 28 additions and 9 deletions

View File

@ -228,7 +228,9 @@ void reposition_client(xcb_connection_t *conn, Client *client) {
return;
/* If the client is floating, we need to check if we moved it to a different workspace */
if (client->workspace->screen == (screen = get_screen_containing(client->rect.x, client->rect.y)))
screen = get_screen_containing(client->rect.x + (client->rect.width / 2),
client->rect.y + (client->rect.height / 2));
if (client->workspace->screen == screen)
return;
if (screen == NULL) {
@ -239,6 +241,8 @@ void reposition_client(xcb_connection_t *conn, Client *client) {
DLOG("Client is on workspace %p with screen %p\n", client->workspace, client->workspace->screen);
DLOG("but screen at %d, %d is %p\n", client->rect.x, client->rect.y, screen);
floating_assign_to_workspace(client, screen->current_workspace);
set_focus(conn, client, true);
}
/*