+ Output *target_output = get_output_by_name(assignment->output, true);
+ if (!target_output) {
+ LOG("Could not get output named \"%s\"\n", assignment->output);
+ continue;
+ }
+ workspace_move_to_output(workspace, target_output);
+
+ bool can_restore_focus = previously_focused != NULL;
+ /* NB: If previously_focused is a workspace we can't
+ * work directly with it since it might have been cleaned up by
+ * workspace_show() already, depending on the
+ * focus order/number of other workspaces on the output.
+ * Instead, we loop through the available workspaces and only focus
+ * previously_focused if we still find it. */
+ if (previously_focused_content) {
+ Con *workspace = NULL;
+ GREP_FIRST(workspace, previously_focused_content, child == previously_focused);
+ can_restore_focus &= (workspace != NULL);
+ }