diff options
| author | srdusr <[email protected]> | 2024-08-20 23:08:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2024-08-20 23:08:00 +0200 |
| commit | bb59ecfa2f1329d978fcfa8b7455db649f019f85 (patch) | |
| tree | dafd907e26c1268ce0517544e6d1ba39a25d9aba /crates/core/src/manager | |
| parent | d124fc27826c2cdf57e46d104db5347434454a24 (diff) | |
| download | srdwm-bb59ecfa2f1329d978fcfa8b7455db649f019f85.tar.gz srdwm-bb59ecfa2f1329d978fcfa8b7455db649f019f85.zip | |
Send tiled xdg_toplevel state so GTK stops reserving its own shadow
No configure this compositor ever sent set any xdg_toplevel::State bit
at all - confirmed by grepping the whole crate, zero hits before this.
GTK4 (Firefox concretely) reads the tiled bits to decide whether to
reserve an invisible client-side shadow margin around its own content,
independent of server- vs client-side decoration; with none ever sent
it always assumed "floating, might need a shadow" and kept reserving
one. That margin sits inside the committed buffer but is functionally
invisible, so this compositor's own border - drawn at the full
geometry, margin included, since nothing here knew the margin existed
- ended up visibly offset from where the client's real chrome began.
Root-caused from a live screenshot: Firefox's srdwm-drawn border sat
clearly up-and-left of its actual toolbar, not framing it. Reported as
"border is not with the window at start" and, more generally, borders
never feeling like part of the window they're drawn around - which
this is: decoration and content genuinely disagreeing about where the
window's edge is.
Sets all four Tiled* bits unconditionally on every xdg_toplevel
configure - the same technique river/dwl use, telling every window
it's flush against something and should skip its own shadow regardless
of whether it's in a literal tiling layout, which is the outcome
actually wanted here: this compositor draws the frame, nothing else
should also be reserving room for one.
Not visually verified against a live client yet - this needs an
actual GTK app rendering under a restarted session to confirm the
shadow margin is really gone, which no offline test can substitute
for.
Diffstat (limited to 'crates/core/src/manager')
0 files changed, 0 insertions, 0 deletions