mirror of
https://github.com/swaywm/sway.git
synced 2025-11-09 13:29:49 -05:00
Handle NULL from output_get_active_workspace
This modifies the places where output_get_active_workspace is called to handle a NULL result. Some places already handled it and did not need a change, some just have guard off code blocks, others return errors, and some have sway_asserts since the case should never happen. A lot of this is probably just safety precautions since they probably will never be called when `output_get_active_workspace` is not fully configured with a workspace.
This commit is contained in:
parent
79c133182d
commit
d3d7956576
10 changed files with 50 additions and 3 deletions
|
|
@ -283,6 +283,9 @@ static bool container_move_in_direction(struct sway_container *container,
|
|||
return false;
|
||||
}
|
||||
struct sway_workspace *ws = output_get_active_workspace(new_output);
|
||||
if (!sway_assert(ws, "Expected output to have a workspace")) {
|
||||
return false;
|
||||
}
|
||||
container_move_to_workspace(container, ws);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -360,6 +363,9 @@ static bool container_move_in_direction(struct sway_container *container,
|
|||
output_get_in_direction(container->workspace->output, move_dir);
|
||||
if (output) {
|
||||
struct sway_workspace *ws = output_get_active_workspace(output);
|
||||
if (!sway_assert(ws, "Expected output to have a workspace")) {
|
||||
return false;
|
||||
}
|
||||
container_move_to_workspace_from_direction(container, ws, move_dir);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -525,6 +531,10 @@ static struct cmd_results *cmd_move_container(int argc, char **argv) {
|
|||
case N_OUTPUT: {
|
||||
struct sway_output *output = destination->sway_output;
|
||||
struct sway_workspace *ws = output_get_active_workspace(output);
|
||||
if (!sway_assert(ws, "Expected output to have a workspace")) {
|
||||
return cmd_results_new(CMD_FAILURE,
|
||||
"Expected output to have a workspace");
|
||||
}
|
||||
container_move_to_workspace(container, ws);
|
||||
}
|
||||
break;
|
||||
|
|
@ -538,7 +548,11 @@ static struct cmd_results *cmd_move_container(int argc, char **argv) {
|
|||
// restore focus on destination output back to its last active workspace
|
||||
struct sway_workspace *new_workspace =
|
||||
output_get_active_workspace(new_output);
|
||||
if (new_output_last_ws && new_output_last_ws != new_workspace) {
|
||||
if (!sway_assert(new_workspace, "Expected output to have a workspace")) {
|
||||
return cmd_results_new(CMD_FAILURE,
|
||||
"Expected output to have a workspace");
|
||||
}
|
||||
if (new_output_last_ws != new_workspace) {
|
||||
struct sway_node *new_output_last_focus =
|
||||
seat_get_focus_inactive(seat, &new_output_last_ws->node);
|
||||
seat_set_raw_focus(seat, new_output_last_focus);
|
||||
|
|
@ -585,6 +599,9 @@ static void workspace_move_to_output(struct sway_workspace *workspace,
|
|||
workspace_detach(workspace);
|
||||
struct sway_workspace *new_output_old_ws =
|
||||
output_get_active_workspace(output);
|
||||
if (!sway_assert(new_output_old_ws, "Expected output to have a workspace")) {
|
||||
return;
|
||||
}
|
||||
|
||||
output_add_workspace(output, workspace);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue