diff --git a/protocols/input-method-unstable-v2.xml b/protocols/input-method-unstable-v2.xml index 97484d81..a51b98a3 100644 --- a/protocols/input-method-unstable-v2.xml +++ b/protocols/input-method-unstable-v2.xml @@ -294,8 +294,8 @@ The serial number reflects the last state of the zwp_input_method_v2 object known to the client. The value of the serial argument must be - equal to the number of commit requests already issued on that object. - When the compositor receives a done event with a serial different than + equal to the number of done events already issued on that object. + When the compositor receives a commit request with a serial different than the number of past commit requests, it must proceed as normal, except it should not change the current state of the zwp_input_method_v2 object. diff --git a/src/imservice.rs b/src/imservice.rs index 462c4203..e8723e2f 100644 --- a/src/imservice.rs +++ b/src/imservice.rs @@ -149,6 +149,8 @@ pub mod c { ..IMProtocolState::default() }; + imservice.serial += Wrapping(1u32); + if active_changed { (imservice.active_callback)(imservice.current.active); if imservice.current.active { @@ -404,7 +406,6 @@ impl IMService { unsafe { c::eek_input_method_commit(self.im, self.serial.0) } - self.serial += Wrapping(1u32); Ok(()) }, false => Err(SubmitError::NotActive),