- ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}");
-#if 0
-
- /* Check if the workspace has not been used yet */
- workspace_initialize(t_ws, c_ws->output, false);
-
- if (c_ws->output != t_ws->output) {
- /* We need to switch to the other output first */
- DLOG("moving over to other output.\n");
-
- /* Store the old client */
- Client *old_client = CUR_CELL->currently_focused;
-
- c_ws = t_ws->output->current_workspace;
- current_col = c_ws->current_col;
- current_row = c_ws->current_row;
- if (CUR_CELL->currently_focused != NULL)
- need_warp = true;
- else {
- Rect *dims = &(c_ws->output->rect);
- xcb_warp_pointer(conn, XCB_NONE, root, 0, 0, 0, 0,
- dims->x + (dims->width / 2), dims->y + (dims->height / 2));
- }
-
- /* Re-decorate the old client, it’s not focused anymore */
- if ((old_client != NULL) && !old_client->dock)
- redecorate_window(conn, old_client);
- else xcb_flush(conn);
-
- /* We need to check if a global fullscreen-client is blocking
- * the t_ws and if necessary switch that to local fullscreen */
- Client* client = c_ws->fullscreen_client;
- if (client != NULL && client->workspace != c_ws) {
- if (c_ws->fullscreen_client->workspace != c_ws)
- c_ws->fullscreen_client = NULL;
- client_enter_fullscreen(conn, client, false);
- }
- }
-
- /* Check if we need to change something or if we’re already there */
- if (c_ws->output->current_workspace->num == (workspace-1)) {
- Client *last_focused = SLIST_FIRST(&(c_ws->focus_stack));
- if (last_focused != SLIST_END(&(c_ws->focus_stack)))
- set_focus(conn, last_focused, true);
- if (need_warp) {
- client_warp_pointer_into(conn, last_focused);
- xcb_flush(conn);
- }
-
- ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}");
-
- return;
- }
-
- Workspace *old_workspace = c_ws;
- c_ws = t_ws->output->current_workspace = workspace_get(workspace-1);
-
- /* Unmap all clients of the old workspace */
- workspace_unmap_clients(conn, old_workspace);
-
- current_row = c_ws->current_row;
- current_col = c_ws->current_col;
- DLOG("new current row = %d, current col = %d\n", current_row, current_col);
-
- ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}");
-
- workspace_map_clients(conn, c_ws);
-
- /* POTENTIAL TO IMPROVE HERE: due to the call to _map_clients first and
- * render_layout afterwards, there is a short flickering on the source
- * workspace (assign ws 3 to output 0, ws 4 to output 1, create single
- * client on ws 4, move it to ws 3, switch to ws 3, you’ll see the
- * flickering). */
-
- /* Restore focus on the new workspace */
- Client *last_focused = SLIST_FIRST(&(c_ws->focus_stack));
- if (last_focused != SLIST_END(&(c_ws->focus_stack)))
- set_focus(conn, last_focused, true);
- else xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, root, XCB_CURRENT_TIME);
-
- render_layout(conn);
-
- /* We can warp the pointer only after the window has been
- * reconfigured in render_layout, otherwise the pointer will
- * be warped to the old position, which will not work when we
- * moved it to another output. */
- if (last_focused != SLIST_END(&(c_ws->focus_stack)) && need_warp) {
- client_warp_pointer_into(conn, last_focused);
- xcb_flush(conn);
- }
-#endif
-}
-
-#if 0
-/*
- * Assigns the given workspace to the given output by correctly updating its
- * state and reconfiguring all the clients on this workspace.
- *
- * This is called when initializing a output and when re-assigning it to a
- * different output which just got available (if you configured it to be on
- * output 1 and you just plugged in output 1).
- *
- */
-void workspace_assign_to(Workspace *ws, Output *output, bool hide_it) {
- Client *client;
- bool empty = true;
- bool visible = workspace_is_visible(ws);
-
- ws->output = output;
-
- /* Copy the dimensions from the virtual output */
- memcpy(&(ws->rect), &(ws->output->rect), sizeof(Rect));
-