]> git.sur5r.net Git - i3/i3/commitdiff
Add the "created" parameter to workspace_get.
authorFernando Tarlá Cardoso Lemos <fernandotcl@gmail.com>
Sun, 13 Mar 2011 23:56:04 +0000 (20:56 -0300)
committerMichael Stapelberg <michael@stapelberg.de>
Mon, 14 Mar 2011 16:07:53 +0000 (17:07 +0100)
If created is not NULL, *created is set to whether or not the
workspace has been just created.

include/workspace.h
src/cmdparse.y
src/manage.c
src/workspace.c

index d903ea82338f677935f343ab36076ace74f85921..ae43e2f1a80bb487c27e6e7fc6d78b9a5b1b1501 100644 (file)
  * creating the workspace if necessary (by allocating the necessary amount of
  * 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
 /**
index 0abcab08d56cd0086f988da27c5f41fbbe4e9a89..f86d51ec80977a81e0ff927dea803177c0b2dda9 100644 (file)
@@ -537,7 +537,7 @@ move:
 
         printf("should move window to workspace %s\n", $<string>5);
         /* get the workspace */
-        Con *ws = workspace_get($<string>5);
+        Con *ws = workspace_get($<string>5, NULL);
         free($<string>5);
 
         /* check if the match is empty, not if the result is empty */
index 1465457e41f5434ea3b1ba3644bf4e5b21629905..c4d6172b99fefe5baa1b7a4899c5abeeedec544a 100644 (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");
-                        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);
 
                         new->container = t_ws->table[t_ws->current_col][t_ws->current_row];
index fa84e2041cf2a68581d11e09e7053d7147991a13..4d3c521896924f24d215e56dba79921ec20c68c3 100644 (file)
@@ -17,7 +17,7 @@
  * 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;
 
     /* TODO: could that look like this in the future?
@@ -63,6 +63,11 @@ Con *workspace_get(const char *num) {
         con_attach(workspace, content, false);
 
         ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"init\"}");
+        if (created != NULL)
+            *created = true;
+    }
+    else if (created != NULL) {
+        *created = false;
     }
 
     //ewmh_update_workarea();
@@ -201,7 +206,7 @@ static void workspace_reassign_sticky(Con *con) {
 void workspace_show(const char *num) {
     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
      * currently on. */
@@ -454,7 +459,7 @@ Workspace *get_first_workspace_for_output(Output *output) {
                 int last_ws = 0;
                 TAILQ_FOREACH(ws, workspaces, workspaces)
                         last_ws = ws->num;
-                result = workspace_get(last_ws + 1);
+                result = workspace_get(last_ws + 1, NULL);
         }
 
         workspace_initialize(result, output, false);