diff --git a/src/action/client.h b/src/action/client.h index 7a6863d3..23fd70a4 100644 --- a/src/action/client.h +++ b/src/action/client.h @@ -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; + } } \ No newline at end of file diff --git a/src/mango.c b/src/mango.c index d718a9c7..381065d6 100644 --- a/src/mango.c +++ b/src/mango.c @@ -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);