Replace duplicate "__" workspace prefix checks with a single function.

This commit is contained in:
Deiz 2012-09-23 08:56:56 -04:00 committed by Michael Stapelberg
parent 2a7359e449
commit a080794e59
5 changed files with 26 additions and 13 deletions

View File

@ -66,6 +66,12 @@ Con *con_parent_with_orientation(Con *con, orientation_t orientation);
*/ */
Con *con_get_fullscreen_con(Con *con, int fullscreen_mode); Con *con_get_fullscreen_con(Con *con, int fullscreen_mode);
/**
* Returns true if the container is internal, such as __i3_scratch
*
*/
bool con_is_internal(Con *con);
/** /**
* Returns true if the node is floating. * Returns true if the node is floating.
* *

View File

@ -359,6 +359,14 @@ Con *con_get_fullscreen_con(Con *con, int fullscreen_mode) {
return NULL; return NULL;
} }
/**
* Returns true if the container is internal, such as __i3_scratch
*
*/
bool con_is_internal(Con *con) {
return (con->name[0] == '_' && con->name[1] == '_');
}
/* /*
* Returns true if the node is floating. * Returns true if the node is floating.
* *
@ -692,7 +700,7 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, bool
* calling tree_render(), so for the "real" focus this is a no-op). * calling tree_render(), so for the "real" focus this is a no-op).
* We dont focus the con for i3 pseudo workspaces like __i3_scratch and * We dont focus the con for i3 pseudo workspaces like __i3_scratch and
* we dont focus when there is a fullscreen con on that workspace. */ * we dont focus when there is a fullscreen con on that workspace. */
if ((workspace->name[0] != '_' || workspace->name[1] != '_') && if (!con_is_internal(workspace) &&
con_get_fullscreen_con(workspace, CF_OUTPUT) == NULL) con_get_fullscreen_con(workspace, CF_OUTPUT) == NULL)
con_focus(con_descend_focused(con)); con_focus(con_descend_focused(con));
@ -701,8 +709,7 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, bool
* dont want to focus invisible workspaces */ * dont want to focus invisible workspaces */
if (source_output != dest_output && if (source_output != dest_output &&
workspace_is_visible(workspace) && workspace_is_visible(workspace) &&
workspace->name[0] != '_' && !con_is_internal(workspace)) {
workspace->name[1] != '_') {
DLOG("Moved to a different output, focusing target\n"); DLOG("Moved to a different output, focusing target\n");
} else { } else {
/* Descend focus stack in case focus_next is a workspace which can /* Descend focus stack in case focus_next is a workspace which can

View File

@ -405,7 +405,7 @@ IPC_HANDLER(get_workspaces) {
Con *output; Con *output;
TAILQ_FOREACH(output, &(croot->nodes_head), nodes) { TAILQ_FOREACH(output, &(croot->nodes_head), nodes) {
if (output->name[0] == '_' && output->name[1] == '_') if (con_is_internal(output))
continue; continue;
Con *ws; Con *ws;
TAILQ_FOREACH(ws, &(output_get_content(output)->nodes_head), nodes) { TAILQ_FOREACH(ws, &(output_get_content(output)->nodes_head), nodes) {

View File

@ -225,7 +225,7 @@ void render_con(Con *con, bool render_fullscreen) {
if (con->layout == L_OUTPUT) { if (con->layout == L_OUTPUT) {
/* Skip i3-internal outputs */ /* Skip i3-internal outputs */
if (con->name[0] == '_' && con->name[1] == '_') if (con_is_internal(con))
return; return;
render_l_output(con); render_l_output(con);
} else if (con->type == CT_ROOT) { } else if (con->type == CT_ROOT) {
@ -240,7 +240,7 @@ void render_con(Con *con, bool render_fullscreen) {
* windows/containers so that they overlap on another output. */ * windows/containers so that they overlap on another output. */
DLOG("Rendering floating windows:\n"); DLOG("Rendering floating windows:\n");
TAILQ_FOREACH(output, &(con->nodes_head), nodes) { TAILQ_FOREACH(output, &(con->nodes_head), nodes) {
if (output->name[0] == '_' && output->name[1] == '_') if (con_is_internal(output))
continue; continue;
/* Get the active workspace of that output */ /* Get the active workspace of that output */
Con *content = output_get_content(output); Con *content = output_get_content(output);

View File

@ -333,7 +333,7 @@ static void _workspace_show(Con *workspace) {
Con *current, *old = NULL; Con *current, *old = NULL;
/* safe-guard against showing i3-internal workspaces like __i3_scratch */ /* safe-guard against showing i3-internal workspaces like __i3_scratch */
if (workspace->name[0] == '_' && workspace->name[1] == '_') if (con_is_internal(workspace))
return; return;
/* disable fullscreen for the other workspaces and get the workspace we are /* disable fullscreen for the other workspaces and get the workspace we are
@ -462,7 +462,7 @@ Con* workspace_next(void) {
/* If currently a numbered workspace, find next numbered workspace. */ /* If currently a numbered workspace, find next numbered workspace. */
TAILQ_FOREACH(output, &(croot->nodes_head), nodes) { TAILQ_FOREACH(output, &(croot->nodes_head), nodes) {
/* Skip outputs starting with __, they are internal. */ /* Skip outputs starting with __, they are internal. */
if (output->name[0] == '_' && output->name[1] == '_') if (con_is_internal(output))
continue; continue;
NODES_FOREACH(output_get_content(output)) { NODES_FOREACH(output_get_content(output)) {
if (child->type != CT_WORKSPACE) if (child->type != CT_WORKSPACE)
@ -483,7 +483,7 @@ Con* workspace_next(void) {
bool found_current = false; bool found_current = false;
TAILQ_FOREACH(output, &(croot->nodes_head), nodes) { TAILQ_FOREACH(output, &(croot->nodes_head), nodes) {
/* Skip outputs starting with __, they are internal. */ /* Skip outputs starting with __, they are internal. */
if (output->name[0] == '_' && output->name[1] == '_') if (con_is_internal(output))
continue; continue;
NODES_FOREACH(output_get_content(output)) { NODES_FOREACH(output_get_content(output)) {
if (child->type != CT_WORKSPACE) if (child->type != CT_WORKSPACE)
@ -502,7 +502,7 @@ Con* workspace_next(void) {
if (!next) { if (!next) {
TAILQ_FOREACH(output, &(croot->nodes_head), nodes) { TAILQ_FOREACH(output, &(croot->nodes_head), nodes) {
/* Skip outputs starting with __, they are internal. */ /* Skip outputs starting with __, they are internal. */
if (output->name[0] == '_' && output->name[1] == '_') if (con_is_internal(output))
continue; continue;
NODES_FOREACH(output_get_content(output)) { NODES_FOREACH(output_get_content(output)) {
if (child->type != CT_WORKSPACE) if (child->type != CT_WORKSPACE)
@ -534,7 +534,7 @@ Con* workspace_prev(void) {
/* If numbered workspace, find previous numbered workspace. */ /* If numbered workspace, find previous numbered workspace. */
TAILQ_FOREACH_REVERSE(output, &(croot->nodes_head), nodes_head, nodes) { TAILQ_FOREACH_REVERSE(output, &(croot->nodes_head), nodes_head, nodes) {
/* Skip outputs starting with __, they are internal. */ /* Skip outputs starting with __, they are internal. */
if (output->name[0] == '_' && output->name[1] == '_') if (con_is_internal(output))
continue; continue;
NODES_FOREACH_REVERSE(output_get_content(output)) { NODES_FOREACH_REVERSE(output_get_content(output)) {
if (child->type != CT_WORKSPACE || child->num == -1) if (child->type != CT_WORKSPACE || child->num == -1)
@ -553,7 +553,7 @@ Con* workspace_prev(void) {
bool found_current = false; bool found_current = false;
TAILQ_FOREACH_REVERSE(output, &(croot->nodes_head), nodes_head, nodes) { TAILQ_FOREACH_REVERSE(output, &(croot->nodes_head), nodes_head, nodes) {
/* Skip outputs starting with __, they are internal. */ /* Skip outputs starting with __, they are internal. */
if (output->name[0] == '_' && output->name[1] == '_') if (con_is_internal(output))
continue; continue;
NODES_FOREACH_REVERSE(output_get_content(output)) { NODES_FOREACH_REVERSE(output_get_content(output)) {
if (child->type != CT_WORKSPACE) if (child->type != CT_WORKSPACE)
@ -572,7 +572,7 @@ Con* workspace_prev(void) {
if (!prev) { if (!prev) {
TAILQ_FOREACH_REVERSE(output, &(croot->nodes_head), nodes_head, nodes) { TAILQ_FOREACH_REVERSE(output, &(croot->nodes_head), nodes_head, nodes) {
/* Skip outputs starting with __, they are internal. */ /* Skip outputs starting with __, they are internal. */
if (output->name[0] == '_' && output->name[1] == '_') if (con_is_internal(output))
continue; continue;
NODES_FOREACH_REVERSE(output_get_content(output)) { NODES_FOREACH_REVERSE(output_get_content(output)) {
if (child->type != CT_WORKSPACE) if (child->type != CT_WORKSPACE)