]> git.sur5r.net Git - i3/i3/commitdiff
ipc: change active to visible, introduce focused
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 12 Mar 2010 02:01:34 +0000 (03:01 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 12 Mar 2010 02:01:34 +0000 (03:01 +0100)
visible == currently visible on the output it is on
(multiple workspaces can be visible at the same time)
focused == has the focus (only one workspace can be focused)

src/ipc.c

index 0df379b4889cc7887a8f910af47a88280707ef5b..20e41219be16693c7a0acdab40744cd26c9e727e 100644 (file)
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -101,6 +101,10 @@ static void ipc_send_message(int fd, const unsigned char *payload,
 static void ipc_send_workspaces(int fd) {
         Workspace *ws;
 
+        Client *last_focused = SLIST_FIRST(&(c_ws->focus_stack));
+        if (last_focused == SLIST_END(&(c_ws->focus_stack)))
+                last_focused = NULL;
+
         yajl_gen gen = yajl_gen_alloc(NULL, NULL);
         y(array_open);
 
@@ -115,9 +119,12 @@ static void ipc_send_workspaces(int fd) {
                 ystr("name");
                 ystr(ws->utf8_name);
 
-                ystr("active");
+                ystr("visible");
                 y(bool, ws->output->current_workspace == ws);
 
+                ystr("focused");
+                y(bool, (last_focused != NULL && last_focused->workspace == ws));
+
                 ystr("rect");
                 y(map_open);
                 ystr("x");