Add the "created" parameter to workspace_get.

If created is not NULL, *created is set to whether or not the
workspace has been just created.
This commit is contained in:
Fernando Tarlá Cardoso Lemos 2011-03-13 20:56:04 -03:00 committed by Michael Stapelberg
parent b8a716c370
commit b4e3dfd76b
4 changed files with 14 additions and 6 deletions

View File

@ -22,8 +22,11 @@
* creating the workspace if necessary (by allocating the necessary amount of * creating the workspace if necessary (by allocating the necessary amount of
* memory and initializing the data structures correctly). * memory and initializing the data structures correctly).
* *
* If created is not NULL, *created will be set to whether or not the
* workspace has just been created.
*
*/ */
Con *workspace_get(const char *num); Con *workspace_get(const char *num, bool *created);
#if 0 #if 0
/** /**

View File

@ -537,7 +537,7 @@ move:
printf("should move window to workspace %s\n", $<string>5); printf("should move window to workspace %s\n", $<string>5);
/* get the workspace */ /* get the workspace */
Con *ws = workspace_get($<string>5); Con *ws = workspace_get($<string>5, NULL);
free($<string>5); free($<string>5);
/* check if the match is empty, not if the result is empty */ /* check if the match is empty, not if the result is empty */

View File

@ -458,7 +458,7 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child,
} }
DLOG("Changing container/workspace and unmapping the client\n"); DLOG("Changing container/workspace and unmapping the client\n");
Workspace *t_ws = workspace_get(assign->workspace-1); Workspace *t_ws = workspace_get(assign->workspace-1, NULL);
workspace_initialize(t_ws, c_ws->output, false); workspace_initialize(t_ws, c_ws->output, false);
new->container = t_ws->table[t_ws->current_col][t_ws->current_row]; new->container = t_ws->table[t_ws->current_col][t_ws->current_row];

View File

@ -17,7 +17,7 @@
* memory and initializing the data structures correctly). * memory and initializing the data structures correctly).
* *
*/ */
Con *workspace_get(const char *num) { Con *workspace_get(const char *num, bool *created) {
Con *output, *workspace = NULL, *child; Con *output, *workspace = NULL, *child;
/* TODO: could that look like this in the future? /* TODO: could that look like this in the future?
@ -63,6 +63,11 @@ Con *workspace_get(const char *num) {
con_attach(workspace, content, false); con_attach(workspace, content, false);
ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"init\"}"); ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"init\"}");
if (created != NULL)
*created = true;
}
else if (created != NULL) {
*created = false;
} }
//ewmh_update_workarea(); //ewmh_update_workarea();
@ -201,7 +206,7 @@ static void workspace_reassign_sticky(Con *con) {
void workspace_show(const char *num) { void workspace_show(const char *num) {
Con *workspace, *current, *old = NULL; Con *workspace, *current, *old = NULL;
workspace = workspace_get(num); workspace = workspace_get(num, NULL);
/* 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. */
@ -454,7 +459,7 @@ Workspace *get_first_workspace_for_output(Output *output) {
int last_ws = 0; int last_ws = 0;
TAILQ_FOREACH(ws, workspaces, workspaces) TAILQ_FOREACH(ws, workspaces, workspaces)
last_ws = ws->num; last_ws = ws->num;
result = workspace_get(last_ws + 1); result = workspace_get(last_ws + 1, NULL);
} }
workspace_initialize(result, output, false); workspace_initialize(result, output, false);