diff --git a/src/move.c b/src/move.c index a60a27ca..e8620c24 100644 --- a/src/move.c +++ b/src/move.c @@ -256,7 +256,13 @@ void tree_move(Con *con, int direction) { return; } - if (con->parent->type == CT_WORKSPACE && con_num_children(con->parent) == 1) { + if (con->fullscreen_mode == CF_GLOBAL) { + DLOG("Not moving fullscreen global container\n"); + return; + } + + if ((con->fullscreen_mode == CF_OUTPUT) || + (con->parent->type == CT_WORKSPACE && con_num_children(con->parent) == 1)) { /* This is the only con on this workspace */ move_to_output_directed(con, direction); return; diff --git a/testcases/t/516-move.t b/testcases/t/516-move.t index 5bcdb09a..3db8c4f0 100644 --- a/testcases/t/516-move.t +++ b/testcases/t/516-move.t @@ -97,4 +97,32 @@ is(scalar @{get_ws_content('left-top')}, 1, 'moved some window to left-bottom wo $compare_window = shift @{get_ws_content('left-top')}; is($social_window->name, $compare_window->{name}, 'moved correct window to left-bottom workspace'); +##################################################################### +# Moving a fullscreen container should change its output. +##################################################################### + +kill_all_windows; + +cmd 'workspace left-top'; +open_window; +my $fs_window = open_window; +open_window; + +cmd '[id=' . $fs_window->id . '] fullscreen enable, move right'; +is(scalar @{get_ws_content('right-top')}, 1, 'moved fullscreen window to right-top workspace'); + +##################################################################### +# Moving a global fullscreen container should not change its output. +##################################################################### + +kill_all_windows; + +cmd 'workspace left-top'; +open_window; +open_window; +open_window; + +cmd 'fullscreen global, move right, fullscreen disable'; +is(scalar @{get_ws_content('right-top')}, 0, 'global fullscreen window didn\'t change workspace with move'); + done_testing;