* 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?
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();
return workspace;
}
void workspace_show(const char *num) {
Con *workspace, *current, *old = NULL;
- workspace = workspace_get(num);
+ bool changed_num_workspaces;
+ workspace = workspace_get(num, &changed_num_workspaces);
/* disable fullscreen for the other workspaces and get the workspace we are
* currently on. */
LOG("Closing old workspace (%p / %s), it is empty\n", old, old->name);
tree_close(old, false, false);
ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"empty\"}");
+ changed_num_workspaces = true;
}
}
workspace->fullscreen_mode = CF_OUTPUT;
LOG("focused now = %p / %s\n", focused, focused->name);
+ /* Update the EWMH hints */
+ if (changed_num_workspaces)
+ ewmh_update_workarea();
+ ewmh_update_current_desktop();
+
ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}");
#if 0
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);