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.
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;
* 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);
}