From 36583ec6ee7ada36764a492fdaae158a5cdd04c3 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Mon, 18 Apr 2011 18:44:18 +0200 Subject: [PATCH] Bugfix: When moving floating cons to other workspaces, attach them to the workspace --- src/con.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/con.c b/src/con.c index 806d0b29..1adfcf35 100644 --- a/src/con.c +++ b/src/con.c @@ -549,8 +549,10 @@ void con_move_to_workspace(Con *con, Con *workspace) { Con *next = con_descend_focused(workspace); /* 3: we go up one level, but only when next is a normal container */ - if (next->type != CT_WORKSPACE) + if (next->type != CT_WORKSPACE) { + DLOG("next originally = %p / %s / type %d\n", next, next->name, next->type); next = next->parent; + } /* 4: if the target container is floating, we get the workspace instead. * Only tiling windows need to get inserted next to the current container. @@ -561,6 +563,12 @@ void con_move_to_workspace(Con *con, Con *workspace) { next = floatingcon->parent; } + if (con->type == CT_FLOATING_CON) { + Con *ws = con_get_workspace(next); + DLOG("This is a floating window, using workspace %p / %s\n", ws, ws->name); + next = ws; + } + DLOG("Re-attaching container to %p / %s\n", next, next->name); /* 5: re-attach the con to the parent of this focused container */ Con *parent = con->parent; @@ -581,7 +589,7 @@ void con_move_to_workspace(Con *con, Con *workspace) { * don’t want to focus invisible workspaces */ if (source_output != dest_output && workspace_is_visible(workspace)) { - DLOG("Moved to a different output, focusing target"); + DLOG("Moved to a different output, focusing target\n"); } else { con_focus(focus_next); } -- 2.39.5