@@ -216,10 +216,49 @@ void test_preedit_override() {
216216 FCITX_ASSERT (ic->capabilityFlags ().test (CapabilityFlag::Preedit));
217217}
218218
219+ void test_event_blocking () {
220+ InputContextManager manager;
221+ auto ic = std::make_unique<TestInputContext>(manager, " Firefox" );
222+ ic->setCapabilityFlags (CapabilityFlag::Preedit);
223+ ic->commitString (" ABC" );
224+
225+ FCITX_ASSERT (!ic->hasPendingEvents ());
226+ FCITX_ASSERT (!ic->hasPendingEventsStrictOrder ());
227+
228+ ic->setBlockEventToClient (true );
229+ ic->commitString (" ABC" );
230+ FCITX_ASSERT (ic->hasPendingEvents ());
231+ FCITX_ASSERT (ic->hasPendingEventsStrictOrder ());
232+
233+ ic->setBlockEventToClient (false );
234+ FCITX_ASSERT (!ic->hasPendingEvents ());
235+ FCITX_ASSERT (!ic->hasPendingEventsStrictOrder ());
236+
237+ ic->setBlockEventToClient (true );
238+ ic->commitString (" ABC" );
239+ ic->updatePreedit ();
240+ FCITX_ASSERT (ic->hasPendingEvents ());
241+ FCITX_ASSERT (ic->hasPendingEventsStrictOrder ());
242+
243+ ic->setBlockEventToClient (false );
244+ FCITX_ASSERT (!ic->hasPendingEvents ());
245+ FCITX_ASSERT (!ic->hasPendingEventsStrictOrder ());
246+
247+ ic->setBlockEventToClient (true );
248+ ic->updatePreedit ();
249+ FCITX_ASSERT (ic->hasPendingEvents ());
250+ FCITX_ASSERT (!ic->hasPendingEventsStrictOrder ());
251+
252+ ic->setBlockEventToClient (false );
253+ FCITX_ASSERT (!ic->hasPendingEvents ());
254+ FCITX_ASSERT (!ic->hasPendingEventsStrictOrder ());
255+ }
256+
219257int main () {
220258 test_simple ();
221259 test_property ();
222260 test_preedit_override ();
261+ test_event_blocking ();
223262
224263 return 0 ;
225264}
0 commit comments