mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-07-02 00:06:12 -04:00
opt: simplified group code
This commit is contained in:
parent
0cafd91c72
commit
88d32bdf8f
3 changed files with 33 additions and 68 deletions
|
|
@ -277,4 +277,33 @@ void client_set_group_config(Client *c) {
|
|||
mango_group_bar_apply_config(cur->group_bar, &config.groupbardata);
|
||||
cur = cur->group_next;
|
||||
}
|
||||
}
|
||||
|
||||
void client_group_detach(Client *c) {
|
||||
if (c->group_prev)
|
||||
c->group_prev->group_next = c->group_next;
|
||||
if (c->group_next)
|
||||
c->group_next->group_prev = c->group_prev;
|
||||
c->group_prev = NULL;
|
||||
c->group_next = NULL;
|
||||
c->isgroupfocusing = false;
|
||||
}
|
||||
|
||||
void client_group_replace(Client *old, Client *new) {
|
||||
client_group_detach(new);
|
||||
|
||||
new->group_prev = old->group_prev;
|
||||
new->group_next = old->group_next;
|
||||
if (old->group_prev)
|
||||
old->group_prev->group_next = new;
|
||||
if (old->group_next)
|
||||
old->group_next->group_prev = new;
|
||||
old->group_prev = NULL;
|
||||
old->group_next = NULL;
|
||||
|
||||
if (old->is_logic_hide || (!new->group_prev && !new->group_next)) {
|
||||
new->isgroupfocusing = false;
|
||||
} else {
|
||||
new->isgroupfocusing = old->isgroupfocusing;
|
||||
}
|
||||
}
|
||||
|
|
@ -231,17 +231,8 @@ int32_t groupleave(const Arg *arg) {
|
|||
Client *rc = tc->group_next ? tc->group_next : tc->group_prev;
|
||||
|
||||
client_focus_group_member(rc);
|
||||
client_group_detach(tc);
|
||||
|
||||
if (tc->group_prev) {
|
||||
tc->group_prev->group_next = tc->group_next;
|
||||
}
|
||||
|
||||
if (tc->group_next) {
|
||||
tc->group_next->group_prev = tc->group_prev;
|
||||
}
|
||||
|
||||
tc->group_prev = NULL;
|
||||
tc->group_next = NULL;
|
||||
tc->isgroupfocusing = false;
|
||||
tc->is_logic_hide = false;
|
||||
|
||||
|
|
|
|||
61
src/mango.c
61
src/mango.c
|
|
@ -1322,54 +1322,8 @@ void client_replace(Client *c, Client *w, bool is_group_change_member,
|
|||
c->stack_proportion = w->stack_proportion;
|
||||
c->is_logic_hide = w->is_logic_hide;
|
||||
|
||||
if (is_swallow) {
|
||||
c->group_prev = w->group_prev;
|
||||
c->group_next = w->group_next;
|
||||
if (w->group_prev) {
|
||||
w->group_prev->group_next = c;
|
||||
}
|
||||
if (w->group_next) {
|
||||
w->group_next->group_prev = c;
|
||||
}
|
||||
w->group_next = NULL;
|
||||
w->group_prev = NULL;
|
||||
|
||||
if (!w->is_logic_hide) {
|
||||
c->isgroupfocusing = w->isgroupfocusing;
|
||||
} else {
|
||||
c->isgroupfocusing = false;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (!is_group_change_member) {
|
||||
if (w->group_prev == c) {
|
||||
c->group_next = w->group_next;
|
||||
if (w->group_next) {
|
||||
w->group_next->group_prev = c;
|
||||
}
|
||||
} else if (w->group_next == c) {
|
||||
c->group_prev = w->group_prev;
|
||||
if (w->group_prev) {
|
||||
w->group_prev->group_next = c;
|
||||
}
|
||||
} else {
|
||||
c->group_prev = w->group_prev;
|
||||
c->group_next = w->group_next;
|
||||
if (w->group_prev) {
|
||||
w->group_prev->group_next = c;
|
||||
}
|
||||
|
||||
if (w->group_next) {
|
||||
w->group_next->group_prev = c;
|
||||
}
|
||||
}
|
||||
|
||||
if (!c->group_prev && !c->group_next) {
|
||||
c->isgroupfocusing = false;
|
||||
} else {
|
||||
c->isgroupfocusing = w->isgroupfocusing;
|
||||
}
|
||||
}
|
||||
if (is_swallow || !is_group_change_member) {
|
||||
client_group_replace(w, c);
|
||||
}
|
||||
|
||||
w->is_logic_hide = true;
|
||||
|
|
@ -6766,16 +6720,7 @@ void unmapnotify(struct wl_listener *listener, void *data) {
|
|||
focusclient(focustop(selmon), 1);
|
||||
} else {
|
||||
|
||||
if (c->group_next && !c->isgroupfocusing) {
|
||||
c->group_next->group_prev = c->group_prev;
|
||||
}
|
||||
|
||||
if (c->group_prev && !c->isgroupfocusing) {
|
||||
c->group_prev->group_next = c->group_next;
|
||||
}
|
||||
|
||||
c->group_next = NULL;
|
||||
c->group_prev = NULL;
|
||||
client_group_detach(c);
|
||||
|
||||
wl_list_remove(&c->link);
|
||||
setmon(c, NULL, 0, true);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue