@@ -216,10 +216,49 @@ void test_preedit_override() {
216
216
FCITX_ASSERT (ic->capabilityFlags ().test (CapabilityFlag::Preedit));
217
217
}
218
218
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
+
219
257
int main () {
220
258
test_simple ();
221
259
test_property ();
222
260
test_preedit_override ();
261
+ test_event_blocking ();
223
262
224
263
return 0 ;
225
264
}
0 commit comments