
This allows us to simplify some of the logic, and get rid of a `gdk_seat_grab()` which might trigger unwanted popups. It's also a bit more future-proof, as it uses the same mechanism to what is used in GTK4 for event handling. While we're at it, stop storing a separate `priv` pointer, which would allow us to use `G_DECLARE_FINAL_TYPE()` in the future.