mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-07-03 00:06:47 -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);
|
mango_group_bar_apply_config(cur->group_bar, &config.groupbardata);
|
||||||
cur = cur->group_next;
|
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 *rc = tc->group_next ? tc->group_next : tc->group_prev;
|
||||||
|
|
||||||
client_focus_group_member(rc);
|
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->isgroupfocusing = false;
|
||||||
tc->is_logic_hide = 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->stack_proportion = w->stack_proportion;
|
||||||
c->is_logic_hide = w->is_logic_hide;
|
c->is_logic_hide = w->is_logic_hide;
|
||||||
|
|
||||||
if (is_swallow) {
|
if (is_swallow || !is_group_change_member) {
|
||||||
c->group_prev = w->group_prev;
|
client_group_replace(w, c);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
w->is_logic_hide = true;
|
w->is_logic_hide = true;
|
||||||
|
|
@ -6766,16 +6720,7 @@ void unmapnotify(struct wl_listener *listener, void *data) {
|
||||||
focusclient(focustop(selmon), 1);
|
focusclient(focustop(selmon), 1);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (c->group_next && !c->isgroupfocusing) {
|
client_group_detach(c);
|
||||||
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;
|
|
||||||
|
|
||||||
wl_list_remove(&c->link);
|
wl_list_remove(&c->link);
|
||||||
setmon(c, NULL, 0, true);
|
setmon(c, NULL, 0, true);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue