refactor workspace_show and friends

This commit is contained in:
Noe Rubinstein 2011-10-02 17:54:23 +02:00 committed by Michael Stapelberg
parent 29fb09ae74
commit 92cc4494aa
6 changed files with 37 additions and 29 deletions

View File

@ -47,19 +47,20 @@ void workspace_set_name(Workspace *ws, const char *name);
bool workspace_is_visible(Con *ws); bool workspace_is_visible(Con *ws);
/** Switches to the given workspace */ /** Switches to the given workspace */
void workspace_show(const char *num); void workspace_show(Con *ws);
void workspace_show_by_name(const char *num);
/** /**
* Focuses the next workspace. * Returns the next workspace.
* *
*/ */
void workspace_next(); Con* workspace_next();
/** /**
* Focuses the previous workspace. * Returns the previous workspace.
* *
*/ */
void workspace_prev(); Con* workspace_prev();
#if 0 #if 0
/** /**

View File

@ -440,7 +440,7 @@ focus:
int count = 0; int count = 0;
TAILQ_FOREACH(current, &owindows, owindows) { TAILQ_FOREACH(current, &owindows, owindows) {
Con *ws = con_get_workspace(current->con); Con *ws = con_get_workspace(current->con);
workspace_show(ws->name); workspace_show(ws);
LOG("focusing %p / %s\n", current->con, current->con->name); LOG("focusing %p / %s\n", current->con, current->con->name);
con_focus(current->con); con_focus(current->con);
count++; count++;
@ -561,18 +561,18 @@ optional_kill_mode:
workspace: workspace:
TOK_WORKSPACE TOK_NEXT TOK_WORKSPACE TOK_NEXT
{ {
workspace_next(); workspace_show(workspace_next());
tree_render(); tree_render();
} }
| TOK_WORKSPACE TOK_PREV | TOK_WORKSPACE TOK_PREV
{ {
workspace_prev(); workspace_show(workspace_prev());
tree_render(); tree_render();
} }
| TOK_WORKSPACE STR | TOK_WORKSPACE STR
{ {
printf("should switch to workspace %s\n", $2); printf("should switch to workspace %s\n", $2);
workspace_show($2); workspace_show_by_name($2);
free($2); free($2);
tree_render(); tree_render();

View File

@ -632,7 +632,7 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, bool
* focused. Must do before attaching because workspace_show checks to see * focused. Must do before attaching because workspace_show checks to see
* if focused container is in its area. */ * if focused container is in its area. */
if (workspace_is_visible(workspace)) { if (workspace_is_visible(workspace)) {
workspace_show(workspace->name); workspace_show(workspace);
/* Dont warp if told so (when dragging floating windows with the /* Dont warp if told so (when dragging floating windows with the
* mouse for example) */ * mouse for example) */
@ -668,7 +668,7 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, bool
/* Descend focus stack in case focus_next is a workspace which can /* Descend focus stack in case focus_next is a workspace which can
* occur if we move to the same workspace. Also show current workspace * occur if we move to the same workspace. Also show current workspace
* to ensure it is focused. */ * to ensure it is focused. */
workspace_show(con_get_workspace(focus_next)->name); workspace_show(con_get_workspace(focus_next));
con_focus(con_descend_focused(focus_next)); con_focus(con_descend_focused(focus_next));
} }

View File

@ -363,7 +363,7 @@ void init_ws_for_output(Output *output, Con *content) {
if (visible && (previous = TAILQ_NEXT(workspace, focused))) { if (visible && (previous = TAILQ_NEXT(workspace, focused))) {
LOG("Switching to previously used workspace \"%s\" on output \"%s\"\n", LOG("Switching to previously used workspace \"%s\" on output \"%s\"\n",
previous->name, workspace_out->name); previous->name, workspace_out->name);
workspace_show(previous->name); workspace_show(previous);
} }
con_detach(workspace); con_detach(workspace);
@ -390,7 +390,7 @@ void init_ws_for_output(Output *output, Con *content) {
if (!visible) { if (!visible) {
visible = TAILQ_FIRST(&(content->nodes_head)); visible = TAILQ_FIRST(&(content->nodes_head));
focused = content; focused = content;
workspace_show(visible->name); workspace_show(visible);
} }
return; return;
} }
@ -403,7 +403,7 @@ void init_ws_for_output(Output *output, Con *content) {
LOG("Initializing first assigned workspace \"%s\" for output \"%s\"\n", LOG("Initializing first assigned workspace \"%s\" for output \"%s\"\n",
assignment->name, assignment->output); assignment->name, assignment->output);
focused = content; focused = content;
workspace_show(assignment->name); workspace_show_by_name(assignment->name);
return; return;
} }

View File

@ -420,7 +420,7 @@ static bool _tree_next(Con *con, char way, orientation_t orientation, bool wrap)
if (!workspace) if (!workspace)
return false; return false;
workspace_show(workspace->name); workspace_show(workspace);
Con *focus = con_descend_direction(workspace, direction); Con *focus = con_descend_direction(workspace, direction);
if (focus) { if (focus) {
con_focus(focus); con_focus(focus);

View File

@ -180,11 +180,8 @@ static void workspace_reassign_sticky(Con *con) {
* Switches to the given workspace * Switches to the given workspace
* *
*/ */
void workspace_show(const char *num) { void workspace_show_changed(Con *workspace, bool changed_num_workspaces) {
Con *workspace, *current, *old = NULL; Con *current, *old = NULL;
bool changed_num_workspaces;
workspace = workspace_get(num, &changed_num_workspaces);
/* disable fullscreen for the other workspaces and get the workspace we are /* disable fullscreen for the other workspaces and get the workspace we are
* currently on. */ * currently on. */
@ -238,11 +235,22 @@ void workspace_show(const char *num) {
ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}"); ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}");
} }
void workspace_show(Con *workspace) {
workspace_show_changed(workspace, false);
}
void workspace_show_by_name(const char *num) {
Con *workspace;
bool changed_num_workspaces;
workspace = workspace_get(num, &changed_num_workspaces);
workspace_show_changed(workspace, changed_num_workspaces);
}
/* /*
* Focuses the next workspace. * Focuses the next workspace.
* *
*/ */
void workspace_next() { Con* workspace_next() {
Con *current = con_get_workspace(focused); Con *current = con_get_workspace(focused);
Con *next = NULL; Con *next = NULL;
Con *output; Con *output;
@ -277,7 +285,7 @@ void workspace_next() {
found_current = 1; found_current = 1;
} else if (child->num == -1 && (current->num != -1 || found_current)) { } else if (child->num == -1 && (current->num != -1 || found_current)) {
next = child; next = child;
goto workspace_next_show; goto workspace_next_end;
} }
} }
} }
@ -292,16 +300,15 @@ void workspace_next() {
next = child; next = child;
} }
} }
workspace_next_end:
workspace_next_show: return next;
workspace_show(next->name);
} }
/* /*
* Focuses the previous workspace. * Focuses the previous workspace.
* *
*/ */
void workspace_prev() { Con* workspace_prev() {
Con *current = con_get_workspace(focused); Con *current = con_get_workspace(focused);
Con *prev = NULL; Con *prev = NULL;
Con *output; Con *output;
@ -336,7 +343,7 @@ void workspace_prev() {
found_current = 1; found_current = 1;
} else if (child->num == -1 && (current->num != -1 || found_current)) { } else if (child->num == -1 && (current->num != -1 || found_current)) {
prev = child; prev = child;
goto workspace_prev_show; goto workspace_prev_end;
} }
} }
} }
@ -352,8 +359,8 @@ void workspace_prev() {
} }
} }
workspace_prev_show: workspace_prev_end:
workspace_show(prev->name); return prev;
} }
static bool get_urgency_flag(Con *con) { static bool get_urgency_flag(Con *con) {