opt: optimize layer cover

This commit is contained in:
DreamMaoMao 2026-06-21 19:36:38 +08:00
parent 90c50e664d
commit e05bea855e
2 changed files with 28 additions and 3 deletions

View file

@ -181,7 +181,8 @@ void client_set_tab_node_visible(Client *c) {
while (cur) {
if (!c->mon->isoverview && cur->tab_bar_node &&
(cur->group_next || cur->group_prev) && VISIBLEON(c, c->mon) &&
ISSCROLLTILED(c) && !c->isfullscreen) {
ISSCROLLTILED(c) && !c->isfullscreen &&
(!is_monocle_layout(c->mon) || c == c->mon->sel)) {
wlr_scene_node_set_enabled(&cur->tab_bar_node->scene_buffer->node,
true);
} else {
@ -190,4 +191,24 @@ void client_set_tab_node_visible(Client *c) {
}
cur = cur->group_next;
}
}
void client_raise_group_tab_bar(Client *c) {
if (!c || !c->mon)
return;
if (!c->group_prev && !c->group_next)
return;
Client *head = c;
while (head->group_prev)
head = head->group_prev;
Client *cur = head;
while (cur) {
if (cur->tab_bar_node) {
wlr_scene_node_raise_to_top(&cur->tab_bar_node->scene_buffer->node);
}
cur = cur->group_next;
}
}

View file

@ -170,8 +170,9 @@ enum {
LyrBg,
LyrBlur,
LyrBottom,
LyrDecorate,
LyrTile,
LyrDecorate,
LyrMaximize,
LyrTop,
LyrFadeOut,
LyrOverlay,
@ -5761,6 +5762,7 @@ void setmaximizescreen(Client *c, int32_t maximizescreen, bool rearrange) {
}
wlr_scene_node_raise_to_top(&c->scene->node);
client_raise_group_tab_bar(c);
if (!is_scroller_layout(c->mon) || c->isfloating)
resize(c, maximizescreen_box, 0);
} else {
@ -5770,7 +5772,9 @@ void setmaximizescreen(Client *c, int32_t maximizescreen, bool rearrange) {
}
wlr_scene_node_reparent(&c->scene->node,
layers[c->isfloating ? LyrTop : LyrTile]);
layers[c->ismaximizescreen ? LyrMaximize
: c->isfloating ? LyrTop
: LyrTile]);
if (!c->force_fakemaximize && !c->ismaximizescreen) {
client_set_maximized(c, false);