Summary
This PR fixes an IME input failure where foot can stop applying IME text after zwp_text_input_v3.done arrives with a serial different from seat->ime.serial.
In the current code, a serial mismatch causes an early return in ime.c::done(), so pending IME updates (commit_string / preedit_string) are dropped for that
done batch.
What changed
In ime.c, done() no longer returns early on serial mismatch.
Instead, foot still logs the mismatch, but continues applying the IME payload from that event as usual.
Why this is the right behavior
text-input-v3 explicitly allows this case and still requires applying incoming text updates.
The protocol says clients must:
"it must proceed with evaluating and applying the changes as normal"
So dropping IME payload only because serials differ is too strict and can break real-world compositor/IME timing.
Scope
This is intentionally a minimal fix:
- no behavior changes outside
done() mismatch handling
- existing logging remains
- build passes after the change
Protocol reference: https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/text-input/text-input-unstable-v3.xml
## Summary
This PR fixes an IME input failure where foot can stop applying IME text after `zwp_text_input_v3.done` arrives with a serial different from `seat->ime.serial`.
In the current code, a serial mismatch causes an early return in `ime.c::done()`, so pending IME updates (`commit_string` / `preedit_string`) are dropped for that
`done` batch.
## What changed
In `ime.c`, `done()` no longer returns early on serial mismatch.
Instead, foot still logs the mismatch, but continues applying the IME payload from that event as usual.
## Why this is the right behavior
`text-input-v3` explicitly allows this case and still requires applying incoming text updates.
The protocol says clients must:
> "it must proceed with evaluating and applying the changes as normal"
So dropping IME payload only because serials differ is too strict and can break real-world compositor/IME timing.
## Scope
This is intentionally a minimal fix:
- no behavior changes outside `done()` mismatch handling
- existing logging remains
- build passes after the change
Protocol reference: https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/text-input/text-input-unstable-v3.xml