XIM text always went out through imdkit's COMPOUND_TEXT converter, which already wraps every UTF-8 string in ESC%G; the UTF8_STRING negotiation, the per-client encoding list, ximtext.c's fallback and its wrapper never changed a byte on the wire. The spot location is honoured for every style now (GTK's XIM module sends it with PreeditCallbacks) and an unset focus window means the client window, as the spec says, so those clients get the popup at the caret. readattrs/place kept four transient fields to pass values between them; ximclose tore down state right before die(); the OOM passthrough context was a third policy for one small calloc where emalloc dies like everything else. Both frontends now poll for engine-owner loss only while a preedit shows instead of XIM waking on a pipe the engine had to know about; ibus stops waking five times a second when idle. keymeaningful() is the engine's own predicate. The standalone xim_test moved into the unit suite, so xim/Makefile is gone.
99 lines
4.0 KiB
C
99 lines
4.0 KiB
C
#include "cutest/cutest.h"
|
|
#include "dat.h"
|
|
#include "fn.h"
|
|
|
|
extern Lang testvi;
|
|
|
|
Str mkstr(char*);
|
|
int checkstr(struct ct*, char*, char*, Str*);
|
|
Str shownpre(Im*);
|
|
|
|
void str_init_utf8(struct ct*);
|
|
void str_edit_and_alias(struct ct*);
|
|
void str_utf8_capacity(struct ct*);
|
|
void str_invalid_and_full_appends(struct ct*);
|
|
void trie_exact_prefix_and_duplicate(struct ct*);
|
|
void trie_put_and_unloaded(struct ct*);
|
|
void popup_layout(struct ct*);
|
|
void font_render(struct ct*);
|
|
void production_maps_load(struct ct*);
|
|
void transmap_states(struct ct*);
|
|
void korean_sequences(struct ct*);
|
|
void korean_compound_vowels(struct ct*);
|
|
void korean_compound_finals(struct ct*);
|
|
void korean_backspace(struct ct*);
|
|
void vietnamese_transitions(struct ct*);
|
|
void vietnamese_backspace(struct ct*);
|
|
void vietnamese_state_lifetime(struct ct*);
|
|
void engine_clears_candidates(struct ct*);
|
|
void engine_backspace_clears_candidates(struct ct*);
|
|
void engine_selects_visible_candidate(struct ct*);
|
|
void engine_candidate_shortcut_modifiers(struct ct*);
|
|
void engine_candidate_page_metadata(struct ct*);
|
|
void engine_candidate_page_snapshots(struct ct*);
|
|
void engine_candidate_page_movement(struct ct*);
|
|
void engine_candidate_completion(struct ct*);
|
|
void engine_active_owner_lifecycle(struct ct*);
|
|
void engine_active_owner_reset(struct ct*);
|
|
void engine_active_owner_caret(struct ct*);
|
|
void engine_popup_preedit_capability(struct ct*);
|
|
void engine_vietnamese_client_preedit(struct ct*);
|
|
void engine_commit_contract(struct ct*);
|
|
void engine_language_switch_state(struct ct*);
|
|
void engine_telex_history_bound(struct ct*);
|
|
void engine_korean_modifiers_and_backspace(struct ct*);
|
|
void engine_direct_language_modes(struct ct*);
|
|
void engine_japanese_readings(struct ct*);
|
|
void engine_japanese_candidates(struct ct*);
|
|
void engine_japanese_backspace_and_boundaries(struct ct*);
|
|
void engine_katakana_sequences(struct ct*);
|
|
void engine_emoji_single_candidate(struct ct*);
|
|
void engine_emoji_queries(struct ct*);
|
|
void engine_emoji_japanese_and_multirune(struct ct*);
|
|
void engine_emoji_digit_aliases(struct ct*);
|
|
void engine_emoji_navigation(struct ct*);
|
|
void engine_search_candidate_keys(struct ct*);
|
|
void engine_emoji_preedit_languages(struct ct*);
|
|
void engine_emoji_start_and_unknown(struct ct*);
|
|
void engine_hanja_search(struct ct*);
|
|
void engine_hanja_unknown_and_cancel(struct ct*);
|
|
void engine_hanja_korean_keys(struct ct*);
|
|
void engine_hanja_backspace(struct ct*);
|
|
void engine_hanja_input_languages(struct ct*);
|
|
void engine_randomized_stress(struct ct*);
|
|
void engine_full_boundary_passthrough(struct ct*);
|
|
void dictionary_candidates(struct ct*);
|
|
void dictionary_misses(struct ct*);
|
|
void dictionary_emoji_identity(struct ct*);
|
|
void ipc_masks_modifiers(struct ct*);
|
|
void ipc_control_and_caret_frames(struct ct*);
|
|
void ipc_runtime_path(struct ct*);
|
|
void ipc_response_pack_boundaries(struct ct*);
|
|
void ipc_response_empty_and_preedit(struct ct*);
|
|
void ipc_response_max_and_drain(struct ct*);
|
|
void ipc_response_fragmented_and_truncated(struct ct*);
|
|
void ipc_broken_peer_send(struct ct*);
|
|
void server_connection_ownership(struct ct*);
|
|
void server_extension_stream(struct ct*);
|
|
void server_rejects_unknown_extension(struct ct*);
|
|
void ibus_machine_id_fallback(struct ct*);
|
|
void ibus_startup_requires_ownership(struct ct*);
|
|
void ibus_capability_policy(struct ct*);
|
|
void ibus_private_input_policy(struct ct*);
|
|
void ibus_context_lifecycle(struct ct*);
|
|
void ibus_active_release_lifecycle(struct ct*);
|
|
void xim_keymap_lookup(struct ct*);
|
|
void xim_compound_text(struct ct*);
|
|
void xim_adapter_key_contract(struct ct*);
|
|
void xim_adapter_release_lifecycle(struct ct*);
|
|
void xim_adapter_free_waits_for_release(struct ct*);
|
|
void xim_adapter_styles(struct ct*);
|
|
void xim_adapter_placement(struct ct*);
|
|
void xim_adapter_placement_updates(struct ct*);
|
|
void xim_adapter_callback_replacement(struct ct*);
|
|
void xim_adapter_callback_unicode(struct ct*);
|
|
void xim_adapter_callback_cleanup(struct ct*);
|
|
void xim_adapter_callback_transfer(struct ct*);
|
|
void xim_adapter_callback_owner_loss(struct ct*);
|
|
void xim_adapter_commit_encoding(struct ct*);
|