opt: fix scan out support for fullscreen

This commit is contained in:
DreamMaoMao 2026-06-06 11:20:19 +08:00
parent 8a92184667
commit 4e87e3b80d
2 changed files with 15 additions and 2 deletions

View file

@ -305,7 +305,8 @@ void client_draw_shadow(Client *c) {
if (c->iskilling || !client_surface(c)->mapped || c->isnoshadow) if (c->iskilling || !client_surface(c)->mapped || c->isnoshadow)
return; return;
if (!config.shadows || (!c->isfloating && config.shadow_only_floating)) { if (!config.shadows || c->isfullscreen ||
(!c->isfloating && config.shadow_only_floating)) {
if (c->shadow->node.enabled) if (c->shadow->node.enabled)
wlr_scene_node_set_enabled(&c->shadow->node, false); wlr_scene_node_set_enabled(&c->shadow->node, false);
return; return;
@ -405,7 +406,7 @@ void apply_split_border(Client *c, bool hit_no_border) {
const Layout *layout = c->mon->pertag->ltidxs[c->mon->pertag->curtag]; const Layout *layout = c->mon->pertag->ltidxs[c->mon->pertag->curtag];
if (hit_no_border || !ISTILED(c) || layout->id != DWINDLE || if (hit_no_border || !ISTILED(c) || layout->id != DWINDLE ||
!config.dwindle_manual_split) { !config.dwindle_manual_split || c->isfullscreen) {
if (c->splitindicator[0]->node.enabled) { if (c->splitindicator[0]->node.enabled) {
wlr_scene_node_set_enabled(&c->splitindicator[0]->node, false); wlr_scene_node_set_enabled(&c->splitindicator[0]->node, false);
} }
@ -492,6 +493,17 @@ void apply_border(Client *c) {
if (!c || c->iskilling || !client_surface(c)->mapped) if (!c || c->iskilling || !client_surface(c)->mapped)
return; return;
if (c->isfullscreen) {
if (c->border->node.enabled) {
wlr_scene_node_set_enabled(&c->border->node, false);
}
return;
} else {
if (!c->border->node.enabled) {
wlr_scene_node_set_enabled(&c->border->node, true);
}
}
bool hit_no_border = check_hit_no_border(c); bool hit_no_border = check_hit_no_border(c);
apply_split_border(c, hit_no_border); apply_split_border(c, hit_no_border);

View file

@ -5526,6 +5526,7 @@ void setfullscreen(Client *c, int32_t fullscreen) // 用自定义全屏代理自
wlr_scene_node_raise_to_top(&c->scene->node); // 将视图提升到顶层 wlr_scene_node_raise_to_top(&c->scene->node); // 将视图提升到顶层
if (!is_scroller_layout(c->mon) || c->isfloating) if (!is_scroller_layout(c->mon) || c->isfloating)
resize(c, c->mon->m, 1); resize(c, c->mon->m, 1);
} else { } else {
c->bw = c->isnoborder ? 0 : config.borderpx; c->bw = c->isnoborder ? 0 : config.borderpx;
if (c->isfloating) if (c->isfloating)