fix: panics on output removal

Despawning the output when its global was removed proved to be
overzealous, as the Dispatch of `zxdg_output_v1` still needed it for
cleanup. Instead, only the `OutputScaleFactor` element is removed, and
every surface entity with an `OnOutput` referencing the removed output,
so scaling events sent to surfaces on non-existent outputs did not panic
or use the provided scale as if an output still existed for it.
This commit is contained in:
En-En 2026-02-05 13:22:57 +00:00 committed by Supreeeme
parent 0947c4685f
commit e6dd3c05c0
3 changed files with 36 additions and 13 deletions

View file

@ -983,7 +983,7 @@ impl Event for client::wl_touch::Event {
}
}
#[derive(Copy, Clone)]
#[derive(Copy, Clone, PartialEq, Eq)]
pub(super) struct OnOutput(pub Entity);
struct OutputName(String);
fn get_output_name(output: Option<&OnOutput>, world: &World) -> Option<String> {