From: Michael Stapelberg Date: Sat, 14 May 2011 20:38:19 +0000 (+0200) Subject: Remove old code from randr.c and workspace.c X-Git-Tag: tree-pr3~23 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d3e458bc7892280798eafb281a5be7106babc14c;p=i3%2Fi3 Remove old code from randr.c and workspace.c --- diff --git a/src/randr.c b/src/randr.c index 56254299..a6b84ddc 100644 --- a/src/randr.c +++ b/src/randr.c @@ -143,57 +143,6 @@ Output *get_output_most(direction_t direction, Output *current) { return candidate; } -#if 0 -/* - * Initializes the specified output, assigning the specified workspace to it. - * - */ -void initialize_output(xcb_connection_t *conn, Output *output, Workspace *workspace) { - i3Font *font = load_font(conn, config.font); - - workspace->output = output; - output->current_workspace = workspace; - - /* Copy rect for the workspace */ - memcpy(&(workspace->rect), &(output->rect), sizeof(Rect)); - - /* Map clients on the workspace, if any */ - workspace_map_clients(conn, workspace); - - /* Create a bar window on each output */ - if (!config.disable_workspace_bar) { - Rect bar_rect = {output->rect.x, - output->rect.y + output->rect.height - (font->height + 6), - output->rect.x + output->rect.width, - font->height + 6}; - uint32_t mask = XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK; - uint32_t values[] = {1, XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS}; - output->bar = create_window(conn, bar_rect, XCB_WINDOW_CLASS_INPUT_OUTPUT, XCB_CURSOR_LEFT_PTR, true, mask, values); - output->bargc = xcb_generate_id(conn); - xcb_create_gc(conn, output->bargc, output->bar, 0, 0); - } - - SLIST_INIT(&(output->dock_clients)); - - ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"init\"}"); - DLOG("initialized output at (%d, %d) with %d x %d\n", - output->rect.x, output->rect.y, output->rect.width, output->rect.height); - - DLOG("assigning configured workspaces to this output...\n"); - Workspace *ws; - TAILQ_FOREACH(ws, workspaces, workspaces) { - if (ws == workspace) - continue; - if (ws->preferred_output == NULL || - get_output_by_name(ws->preferred_output) != output) - continue; - - DLOG("assigning ws %d\n", ws->num + 1); - workspace_assign_to(ws, output, true); - } -} -#endif - /* * Disables RandR support by creating exactly one output with the size of the * X11 screen. @@ -492,50 +441,6 @@ static void output_change_mode(xcb_connection_t *conn, Output *output) { } } } - -#if 0 - Rect bar_rect = {output->rect.x, - output->rect.y + output->rect.height - (font->height + 6), - output->rect.x + output->rect.width, - font->height + 6}; - - xcb_set_window_rect(conn, output->bar, bar_rect); - - /* go through all workspaces and set force_reconfigure */ - TAILQ_FOREACH(ws, workspaces, workspaces) { - if (ws->output != output) - continue; - - SLIST_FOREACH(client, &(ws->focus_stack), focus_clients) { - client->force_reconfigure = true; - if (!client_is_floating(client)) - continue; - /* For floating clients we need to translate the - * coordinates (old workspace to new workspace) */ - DLOG("old: (%x, %x)\n", client->rect.x, client->rect.y); - client->rect.x -= ws->rect.x; - client->rect.y -= ws->rect.y; - client->rect.x += ws->output->rect.x; - client->rect.y += ws->output->rect.y; - DLOG("new: (%x, %x)\n", client->rect.x, client->rect.y); - } - - /* Update dimensions from output */ - memcpy(&(ws->rect), &(ws->output->rect), sizeof(Rect)); - - /* Update the dimensions of a fullscreen client, if any */ - if (ws->fullscreen_client != NULL) { - DLOG("Updating fullscreen client size\n"); - client = ws->fullscreen_client; - Rect r = ws->rect; - xcb_set_window_rect(conn, client->frame, r); - - r.x = 0; - r.y = 0; - xcb_set_window_rect(conn, client->child, r); - } - } -#endif } /* diff --git a/src/workspace.c b/src/workspace.c index 5127fb00..385921a4 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -85,37 +85,6 @@ Con *workspace_get(const char *num, bool *created) { return workspace; } -#if 0 - -/* - * Sets the name (or just its number) for the given workspace. This has to - * be called for every workspace as the rendering function - * (render_internal_bar) relies on workspace->name and workspace->name_len - * being ready-to-use. - * - */ -void workspace_set_name(Workspace *ws, const char *name) { - char *label; - int ret; - - if (name != NULL) - ret = asprintf(&label, "%d: %s", ws->num + 1, name); - else ret = asprintf(&label, "%d", ws->num + 1); - - if (ret == -1) - errx(1, "asprintf() failed"); - - FREE(ws->name); - FREE(ws->utf8_name); - - ws->name = convert_utf8_to_ucs2(label, &(ws->name_len)); - if (config.font != NULL) - ws->text_width = predict_text_width(global_conn, config.font, ws->name, ws->name_len); - else ws->text_width = 0; - ws->utf8_name = label; -} -#endif - /* * Returns true if the workspace is currently visible. Especially important for * multi-monitor environments, as they can have multiple currenlty active @@ -260,225 +229,8 @@ void workspace_show(const char *num) { ewmh_update_current_desktop(); 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)); - - ewmh_update_workarea(); - - /* Force reconfiguration for each client on that workspace */ - SLIST_FOREACH(client, &(ws->focus_stack), focus_clients) { - client->force_reconfigure = true; - empty = false; - } - - if (empty) - return; - - /* Render the workspace to reconfigure the clients. However, they will be visible now, so… */ - render_workspace(global_conn, output, ws); - - /* …unless we want to see them at the moment, we should hide that workspace */ - if (visible && !hide_it) - return; - - /* however, if this is the current workspace, we only need to adjust - * the output’s current_workspace pointer (and must not unmap the - * windows) */ - if (c_ws == ws) { - DLOG("Need to adjust output->current_workspace...\n"); - output->current_workspace = c_ws; - ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}"); - return; - } - - workspace_unmap_clients(global_conn, ws); } -/* - * Initializes the given workspace if it is not already initialized. The given - * screen is to be understood as a fallback, if the workspace itself either - * was not assigned to a particular screen or cannot be placed there because - * the screen is not attached at the moment. - * - */ -void workspace_initialize(Workspace *ws, Output *output, bool recheck) { - Output *old_output; - - if (ws->output != NULL && !recheck) { - DLOG("Workspace already initialized\n"); - return; - } - - old_output = ws->output; - - /* If this workspace has no preferred output or if the output it wants - * to be on is not available at the moment, we initialize it with - * the output which was given */ - if (ws->preferred_output == NULL || - (ws->output = get_output_by_name(ws->preferred_output)) == NULL) - ws->output = output; - - DLOG("old_output = %p, ws->output = %p\n", old_output, ws->output); - /* If the assignment did not change, we do not need to update anything */ - if (old_output != NULL && ws->output == old_output) - return; - - workspace_assign_to(ws, ws->output, false); -} - -/* - * Gets the first unused workspace for the given screen, taking into account - * the preferred_output setting of every workspace (workspace assignments). - * - */ -Workspace *get_first_workspace_for_output(Output *output) { - Workspace *result = NULL; - - Workspace *ws; - TAILQ_FOREACH(ws, workspaces, workspaces) { - if (ws->preferred_output == NULL || - get_output_by_name(ws->preferred_output) != output) - continue; - - result = ws; - break; - } - - if (result == NULL) { - /* No assignment found, returning first unused workspace */ - TAILQ_FOREACH(ws, workspaces, workspaces) { - if (ws->output != NULL) - continue; - - result = ws; - break; - } - } - - if (result == NULL) { - DLOG("No existing free workspace found to assign, creating a new one\n"); - - int last_ws = 0; - TAILQ_FOREACH(ws, workspaces, workspaces) - last_ws = ws->num; - result = workspace_get(last_ws + 1, NULL); - } - - workspace_initialize(result, output, false); - return result; -} - -#endif - static bool get_urgency_flag(Con *con) { Con *child; TAILQ_FOREACH(child, &(con->nodes_head), nodes)