]> git.lizzy.rs Git - bspwm.git/blobdiff - src/window.c
Add new setting: cancel_birth_rotation
[bspwm.git] / src / window.c
index d1e8781e440fc80be5bebd2ec826ce873cbb2af6..41bf15abd71122d115544cd77d9e2cec06f0ecfa 100644 (file)
@@ -69,7 +69,7 @@ void schedule_window(xcb_window_t win)
        }
 }
 
-void manage_window(xcb_window_t win, rule_consequence_t *csq, int fd)
+bool manage_window(xcb_window_t win, rule_consequence_t *csq, int fd)
 {
        monitor_t *m = mon;
        desktop_t *d = mon->desk;
@@ -87,7 +87,7 @@ void manage_window(xcb_window_t win, rule_consequence_t *csq, int fd)
                free(csq->layer);
                free(csq->state);
                window_show(win);
-               return;
+               return false;
        }
 
        if (csq->node_desc[0] != '\0') {
@@ -158,9 +158,15 @@ void manage_window(xcb_window_t win, rule_consequence_t *csq, int fd)
        snprintf(c->class_name, sizeof(c->class_name), "%s", csq->class_name);
        snprintf(c->instance_name, sizeof(c->instance_name), "%s", csq->instance_name);
 
+       if ((csq->state != NULL && (*(csq->state) == STATE_FLOATING || *(csq->state) == STATE_FULLSCREEN)) || csq->hidden) {
+               n->vacant = true;
+       }
+
        f = insert_node(m, d, n, f);
        clients_count++;
 
+       n->vacant = false;
+
        put_status(SBSC_MASK_NODE_ADD, "node_add 0x%08X 0x%08X 0x%08X 0x%08X\n", m->id, d->id, f!=NULL?f->id:0, win);
 
        if (f != NULL && f->client != NULL && csq->state != NULL && *(csq->state) == STATE_FLOATING) {
@@ -179,6 +185,7 @@ void manage_window(xcb_window_t win, rule_consequence_t *csq, int fd)
        set_sticky(m, d, n, csq->sticky);
        set_private(m, d, n, csq->private);
        set_locked(m, d, n, csq->locked);
+       set_marked(m, d, n, csq->marked);
 
        arrange(m, d);
 
@@ -208,6 +215,8 @@ void manage_window(xcb_window_t win, rule_consequence_t *csq, int fd)
        ewmh_update_client_list(false);
        free(csq->layer);
        free(csq->state);
+
+       return true;
 }
 
 void set_window_state(xcb_window_t win, xcb_icccm_wm_state_t state)