2005-05-02 Jens Petersen * configure.ac: Version 12.2. 2005-05-02 Akira TAGOH * configure.ac (LIBIIIMCF_MAJOR_VERSION): set to 3. (LIBIIIMCF_MINOR_VERSION): set to 0. NOTE: ABI was broken. bumped soname then. now it's libiiimcf.so.3. 2005-04-21 Jens Petersen * iiimf-lib-client.pc.in: Require iiimf-lib-protocol not iiim-protocol-lib. 2005-04-14 Jens Petersen * iiimf-lib-client.pc.in: New file for pkg-config. * autogen.sh: Pass --copy to automake. * Makefile.am (pkgconfig_DATA): Add pkg-config file. * configure.ac: Output iiimf-lib-client.pc. 2005-04-13 Jens Petersen * configure.ac: Name package iiimf-lib-client, bump version, and update project mail address. Do not call AC_CONFIG_AUX_DIR. Do not override PACKAGE and VERSION. Call AM_INIT_AUTOMAKE without arguments. * Makefile.am (ACLOCAL_AMFLAGS): Include toplevel acfiles. 2005-04-05 AShiZaWa KaZuNoRi * clientenv.c (dir_valid): new function for -user fallback. (iiimcf_alternate_unix_domain_socket_file_dir): new function for -user fallback. (iiimcf_create_client_env): change for -user fallback. 2005-04-01 Motonobu Ichimura * clientenv.c (iiimcf_client_file_server): re-check the rest of data length not to read invalid data. 2005-03-31 Akira TAGOH * clientenv.c (iiimcf_create_client_env): Use /tmp/.iiimp-unix-$USER for a per-user daemon. 2005-03-29 Akira TAGOH * clientenv.c (iiimcf_create_client_env): lookup $HOME/.iiim/.iiimp-unix-$USER instead of /var/run/iiim/.iiimp-unix-$USER when iiimd is running with -user. 2005-03-28 Sriram Swaminathan * ns-listener.c (removed) * iiimcf_file_operation.c (added) * iiimcfint.h * ns.c (removed) * message.c * Makefile.am Modified IIIMCF to use the new protocols (IM_FILE_OPERATION and IM_FILE_OPERATION_REPLY). These two protocols have replace all the protocols previously added to support the namespace based I/O related operations. 2005-03-22 Akira TAGOH * ns.c: removed CSC_PATH definition. it's not necessary anymore. 2005-03-20 Akira TAGOH * Makefile.am (iiimincludedir): Use $(includedir)/iiim. iiimp header files are intentionally installed under /usr/include/iiim according to the directory structure change proposal. (iiiminclude_HEADERS): Use it instead of include_HEADERS. 2005-03-15 Sriram Swaminathan * libiiimcf.sym * context.c Changed iiimcf_seticvalues() to iiimcf_context_set_attr() 2005-03-14 Sriram Swaminathan * ns.c * iiimcfint.h * message.c Added changes to support the Namespace based I/O API equivalents of fstat() and ftruncate() 2005-03-10 Sriram Swaminathan * ns.c Changes related to NS based I/O APIs to get the correct pathnames. 2005-02-28 Hidetoshi Tajima * ns-listener.c: include for PATH_MAX * ns.c: include for PATH_MAX * Makefile.am (libiiimcf_la_LDFLAGS): remove -fno-strict-aliasing 2004-12-19 Sriram Swaminathan * ns.c Fixed client crash problem (which crashes server) due to wrong size value in read_ns(). This problem was reproducible only if httx was run without -if option. 2004-12-15 Sriram Swaminathan * ns.c Changes made to get the errno for NS IO APIs. 2004-12-14 Sriram Swaminathan * ns.c More friendly POSIX IO APIs (now returns the exact error value so that LEs can handle error conditions) 2004-12-14 Sriram Swaminathan * ns.c * iiimcfint.h * message.c * Makefile.am Implementation of rest of POSIX IO system calls. Protocols added for opendir(), readdir(), closedir(), stat() and lstat() 2004-12-14 Makoto Fujiyoshi * iiimcf.c (iiimcf_get_im_id) * context.c (iiimcf_get_ic_id): NULL check addition. 2004-12-08 Hidetoshi Tajima * iiimcf.c: * message.c: * trigger.c: - use hotkey_profile matched to the current profile_id given with IM_SELECT_HOTKEY_PROFILE 2004-12-04 Sriram Swaminathan * ns-listener.c * iiimcfint.h * ns.c * message.c - Implementation of next set of POSIX IO system calls. Protocols added for mkdir(), rmdir(), lseek(), unlink(), rename(), fcntl(), symlink(), creat(), truncate() - Fixed compiler warnings 2004-12-01 Makoto Fujiyoshi * clientenv.c: calculate correct size of buffer for unix domain socket directory. * iiimcf.c (IIIMCF_DEFAULT_TIMEOUT): expanded to 10000ms. 2004-11-29 Hidetoshi Tajima * iiimcf.c: reset 'inited' flag in iiimcf_finalize() so that next iiimcf_initialize() should re-initialize iiimcf again. 2004-11-24 Sriram Swaminathan * iiimcf.c * ns-listener.c * ns.c * iiimcfint.h * message.c * Makefile.am Implementation of POSIX IO API (open, read, write, close) protocol 2004-11-02 Jens Petersen * configure.ac: Don't override CFLAGS, CXXFLAGS and LDFLAGS. 2004-11-02 Sriram Swaminathan * ns.c * message.c Since protocols are going to be introduced for OPEN, READ, WRITE separately, IM_READ_NS is renamed as IM_NS_LISTENER which will be specific to listener functionality 2004-10-31 Yu Shao * clientenv.c * context.c * iiimcf.c * iiimcfint.h * Makefile.am miscellaneous cleanups for warnings to avoid potential bugs 2004-10-13 Akira TAGOH * Makefile.am (libiiimcf_la_CFLAGS): added -DSOCKETDIR. * clientenv.c (iiimcf_create_client_env): stop using the hardcoded path. * configure.ac (SOCKETDIR): define to determine the place of the socket directory. 2004-10-12 Sriram Swaminathan * Makefile.am * ns.c * iiimcfint.h * message.c Added support for new protocol IM_READ_NS and IM_READ_NS_REPLY 2004-10-04 Akira TAGOH * clientenv.c (iiimcf_create_client_env): look at /var/run/iiim for the unix domain socket directory. 2004-09-29 Sriram Swaminathan * message.c Sending HOTKEY_STATE_NOTIRY_REPLY message to IIIMSF causes status lots of issues (status draw not called during conversion -off and also when switching languages using language selection window) 2004-09-29 Hidetoshi Tajima * clientenv.c (iiimcf_client_auth_password): don't create mysterious $(HOME)/.iiim/auth/passwd file. 2004-09-14 Motonobu Ichimura * trigger.c (iiimcf_process_hotkey_keyevent): BugFix. (some older version of IIIMSF sends protocol version 3, but not supported hotkey protocol. so caused SIGSEGV in such case.) * context.c (create_icattribute): when client doesn't specify IIIMCF_ATTR_INPUT_LANGUAGE, and has setlocale function, try to detect most prefferable language by current locale. 2004-09-07 Motonobu Ichimura * iiimcf.c (iiimcf_destroy_handle): fix memory leak. * message.c (iiimcf_process_message): call iiimcf_receive_trigger_notify in the case of IM_HOTKEY_STATE_NOTIFY. reply HOTKEY_STATE_NOTIRY_REPLY message to IIMSF. 2004-08-23 Sriram Swaminathan * iiimcf.c * trigger.c * iiimcfint.h * event.c * message.c Implemented IM_SELECT_HOTKEY_PROFILE protocol. 2004-08-19 Sriram Swaminathan * aux.c * component.c * context.c * event.c * iiimcfint.h * test * text.c * trigger.c * test/check/sendkey2.c * test/check/common.c - more updates on the client side related to HOTKEY protocol notification and event forwarding to server. - Fixed some compilation warnings 2004-08-11 Sriram Swaminathan * iiimcf.c * trigger.c * event.c * message.c * iiimcfint.h code cleanup. 2004-08-09 Sriram Swaminathan * trigger.c * event.c * context.c - Added iiimcf_seticvalues() so that IIIM Client Framework's can use it to switch languages instead of destroying and creating new Input Context per language. - Moved Language switching to server side and so removed the switching functionality related code from the IIIMCF. 2004-08-04 Hidetoshi Tajima * iiimcf.c: stop printing "hoge" to stdout:-). 2004-08-02 Motonobu Ichimura * clientenv.c: * iiimcf.c: code cleanup * message.c: (iiimcf_process_message) (iiimcf_request_message) : always delete event regardless of handling event is succeed or not. * event.c (iiimcf_forward_event): ditto * input-method.c (iiimcf_unregister_input_method_list): fix memory leak. 2004-07-29 Makoto Fujiyoshi * iiimcf.c: (iiimcf_get_im_id): added. * libiiimcf.sym: iiimcf_get_im_id, iiimcf_get_ic_id added. * context.c: (iiimcf_get_ic_id): added. 2004-07-22 Makoto Fujiyoshi * input-method.c: (iiimcf_register_input_method_langs): Bug fix. avoid modifying variable 'i' unexpectedly. 2004-07-14 Motonobu Ichimura * iiimcfint.h: (struct IIIMCF_handle_rec): removed use_tls. added IIIMCF_client_conf *pconf (struct IIIMCF_client_env): renamed conf to pconf. * iiimcf.c (iiimcf_connect): if iiimcf connects iiimsf, but fails to authenicate, fallback to next iiimsf. (iiimcf_delete_stream): new function 2004-07-13 Motonobu Ichimura * clientenv.c: (iiimcf_client_file_server): avoid entering infinite loop when user specifies a invalid parameter. 2004-07-12 Motonobu Ichimura * iiimcfint.h: (struct IIIMCF_client_conf): added. (struct IIIMCF_client_env): added IIIMCF_client_conf *conf. removed server_node, service. (struct IIIMCF_handle_rec): added use_tls. * clientenv.c: (iiimcf_client_config_new) (iiimcf_client_config_free): new function. * iiimcf.c: (iiimcf_connect): use IIIMCF_client_conf instead of clientenv->server_node, clientenv->service to create IIIMF_stream. 2004-07-12 Motonobu Ichimura * clean up source code. 2004-06-17 Sriram Swaminathan * iiimcf.c * trigger.c * input-method.c * iiimcfint.h * event.c * message.c - Enabled HOTKEY protocol in IIIMCF 2004-05-03 Hidetoshi Tajima * aux.c: added changes to process IIMCF_EVENT_TYPE_AUX_GETVALUES message properly. 2004-03-29 Hidetoshi Tajima * libiiimcf.sym: * iiimcfint.h: * aux.c: * event.c: added iiimcf_create_aux_getvalues_event() and iiimcf_forward_aux_getvalues(). 2004-02-11 Ilgyoung Park * configure.ac : removed 'libiiimcf.spec' to workaround configure time failure. 2004-01-08 Hidetoshi Tajima * autogen.sh: Added initially. * Makefile.am : Added again. By accident, I removed Makefile.am instead of Makefile.in. * Makefile.in : removed. 2004-01-06 Hidetoshi Tajima * configure.ac (PACKAGE): backout the change made under: rev 1547: clkao | 2003-12-23 10:06:31 -0800 (Tue, 23 Dec 2003) | 3 lines Make im-sdk compile on FreeBSD. since this has broken the build on many other systems. * libiiimcf.spec.in : added * configure, Makefile.in, aclocal.m4: removed * test/Makefile.in, test/check/Makefile.in: removed 2003-11-19 Motonobu Ichimura * Makefile.am: remove -module flag 2003-11-14 Hidetoshi Tajima * context.c: fix missing check if ic is invalid before actually removing context. * text.c (iiimcf_convert_iiimp_text_to_text) : return IIIMF_STATUS_FAIL when given input text is NULL. (This avoids iiimgcf crash when iiimf-canna l/e is used in IIIMSF while cannaserver is not running). 2003-10-27 Hidetoshi Tajima * iiimcf.c (iiimcf_initialize) : should return IIIMF_STATUS_SUCCESS at the 2nd call. 2003-08-19 MIYASHITA Hisashi * event.c (IIIMCF_EVENT_SET_STATE): Bug fix. 2003-08-17 MIYASHITA Hisashi * configure.ac (LIBIIIMCF_MAJOR_VERSION): Increased because I changed how libiiimcf manages the object life cycle. 2003-08-16 MIYASHITA Hisashi * event.c (IIIMCF_EVENT_ADDREF, IIIMCF_EVENT_RMREF) (IIIMCF_EVENT_REFCHK): Removed. (IIIMCF_EVENT_STATE_FLAGS): New enumerator. (IIIMCF_EVENT_SET_STATE, IIIMCF_EVENT_RESET_STATE) (IIIMCF_EVENT_IS_DISCARDABLE): New macros. (iiimcf_broadcast_event): While broadcasting, set IIIMCF_EVENT_STATE_BROADCASTING flag for the event. Then, pe is discardable after it, delete it. (iiimcf_forward_event): Use IIIMCF_EVENT_IS_DISCARDABLE instead of IIIMCF_EVENT_REFCHK. (iiimcf_dispatch_event): Even though pc is now in broadcasting, delete pe when it is discardable. (iiimcf_dispatch_event): While broadcasting, set IIIMCF_EVENT_STATE_DISPATCHING flag for the event. Then, pe is discardable after it, delete it. (iiimcf_get_next_event): Clear IIIMCF_EVENT_STATE_INQUEUE, and then set IIIMCF_EVENT_STATE_MUSTIGNORE instead of setting refcount. (iiimcf_peek_next_event): Set IIIMCF_EVENT_STATE_INQUEUE. instead of setting refcount. (iiimcf_ignore_event): Clear IIIMCF_EVENT_STATE_MUSTIGNORE, then if it is discardable, delete it. * iiimcfint.h (IIIMCF_event_rec): Define state instead of refcount. (iiimcf_forward_aux_setvalues): New decl. * aux.c (iiimcf_create_aux_setvalues_event): Bug fix. pstrs must be incremented. 2003-08-11 MIYASHITA Hisashi * preedit.c (iiimcf_update_preedit): Added comment on calling iiimcf_toggle_preedit() and made it check the return code of it. 2003-07-29 HideToshi Tajima * preedit.c (iiimcf_update_preedit): Like the similar for the status, allow the preedit here even if IIIMCF_CONTEXT_PREEDIT_ENABLED has not been set in advance. 2003-07-30 MIYASHITA Hisashi * trigger.c (iiimcf_receive_trigger_notify): Bug fix. In this funciton, we have to check IIIMCF_CONTEXT_CONVERSION_MODE, not IIIMCF_CONTEXT_PREEDIT_ENABLED. * status.c (iiimcf_update_status): When irregularly enabling the status, call iiimcf_toggle_status() instead of immediately setting IIIMCF_CONTEXT_STATUS_ENABLED. 2003-06-24 MIYASHITA Hisashi * libiiimcf.sym: Added iiimcf_get_input_method_desc, iiimcf_get_input_method_languages, and iiimcf_get_supported_input_methods. * Makefile.am (libiiimcf_la_SOURCES): Added input-method.c. * iiimcf.c (iiimcf_make_string): Do memcpy only if len is greater than 0. (iiimcf_unregister_langs): Exported it. (iiimcf_setimvalues): Made it call iiimcf_register_input_method_list() (iiimcf_destroy_handle): Made it call iiimcf_unregister_input_method_list(). * input-method.c: New file. * iiimcfint.h (IIIMCF_language_rec): Removed hrn_len. (iiimcf_unregister_langs): New function decl. (iiimcf_unregister_input_method_list): Ditto. (iiimcf_register_input_method_list): Ditto. (IIIMCF_input_method_rec): Removed imname_len, hrn_len, domainname, and plangs. Introduced domain and pplangs instead. * context.c (create_icattribute): Made it use iiimcf_string_length() to get the length of pim->imname. 2003-06-21 MIYASHITA Hisashi * iiimcf.c (iiimcf_register_object_descriptor_list): New function. (iiimcf_setimvalues): Split the part on IIIMP_IMATTRIBUTE_OBJECT_DESCRIPTOR_LIST into iiimcf_register_object_descriptor_list(). And made this function just call that. 2003-06-20 MIYASHITA Hisashi * message.c (iiimcf_process_message): Set ph->server_protocol_version. * iiimcfint.h (IIIMCF_handle_rec): Added server_protocol_version. * iiimcf.c (iiimcf_connect): Limit the protocol version that the server supports. (iiimcf_create_handle): Set the default protocol version of server to 2. (iiimcf_get_version_number): Return the current protocol version. 2003-06-17 MIYASHITA Hisashi * configure.ac (LIBIIIMCF_MINOR_VERSION): Set the minor version to 2. (AC_INIT): Set version to 1.2. * iiimcf.c (free_object_descriptor): Cast a non-constant type for pod->hrn, pod->hrn, pod->signature, and pod->user. 2003-06-13 MIYASHITA Hisashi * Makefile.am (libiiimcf_la_LDFLAGS): Corrected. * clientenv.c (iiimcf_create_client_env): It must set home directory before setting "server_node" and "service". 2003-06-12 MIYASHITA Hisashi * Makefile.am (libiiimcf_la_LDFLAGS): Use -g instead of -Wl,-g. * iiimcfint.h (IIIMCF_text_property_value_rec): Disabled. (iiimcf_request_message): New function declaration. * libiiimcf.sym (iiimcf_get_input_method_desc) (iiimcf_get_input_method_languages) (iiimcf_get_supported_input_methods): Temporarily commented out, because they are not defined currently. * event.c (IIIMCF_EVENT_RMREF, IIIMCF_EVENT_REFCHK): Return 0 as a value of the whole expression. * aux.c: Included stdlib.h and string.h. * event.c: Ditto. * lookup_choice.c: Ditto. * object.c: Ditto. * text.c: Ditto. * attr.c: Included stdlib.h. * commit.c: Ditto. * iiimcf.c: Ditto. * preedit.c: Ditto. * status.c: Ditto. * context.c: Ditto. 2003-06-10 MIYASHITA Hisashi * Makefile.am (libiiimcf_la_LIBADD): Link it with libEIMIL.la, not with libEIMIL.a 2003-05-31 MIYASHITA Hisashi * commit.c (iiimcf_commit_string): In case that the server sends IM_COMMIT_STRING more than once in the same session, simply concatenate the commit string with the last result. * text.c (iiimcf_append_contents_to_text): New function. * iiimcfint.h (IIIMCF_IS_STATE_CHANGED): New macro. (iiimcf_append_contents_to_text): New function decl. * message.c (iiimcf_process_message): When pmes->v.trigger_notify.flag is 0, regard it as trigger on message; otherwise, as trigger off message. * preedit.c (iiimcf_update_preedit): Update preedit_caret_position. 2003-05-16 MIYASHITA Hisashi * configure.ac (TOPDIR): Don't do AC_SUBST on it. 2003-05-06 MIYASHITA Hisashi * iiimcf.c (IIIMCF_DEFAULT_TIMEOUT): expanded to 2000ms. 2003-05-05 MIYASHITA Hisashi * aux.c (iiimcf_update_aux_draw): When free a slot in pstrs, clear the pointer to NULL. And set pa->index properly. (create_aux_event): Duplicate all the members of IIIMCF_auxevent. (iiimcf_delete_aux_event): Don't check "independent" flag. Free all of the members. (iiimcf_create_aux_setvalues_event): Don't set "independent" flag. Check if num_intvals and num_strvals are greater than 0 before setting the corresponding array. * iiimcfint.h (IIIMCF_auxevent): Removed the member, "independent". 2003-04-26 MIYASHITA Hisashi * iiimcfint.h (IIIMCF_handle_rec): Add thread_owner_id adn thread_lock_count to support recursive lock, which is required for calling remove_context() from invalidate_context(). (IIIMCF_LOCK_HANDLE, IIIMCF_UNLOCK_HANDLE): Use iiimcf_lock_handle() and iiimcf_unlock_handle(). (iiimcf_lock_handle, iiimcf_unlock_handle): New function declarations. * iiimcf.c (iiimcf_lock_handle, iiimcf_unlock_handle): New functions. They support recursive lock. (iiimcf_unregister_langs): When ppl is NULL, immediately return. (iiimcf_register_langs): First call iiimcf_unregister_langs(), and reset ph->pplangs and ph->num_langs. (iiimcf_register_trigger_keys): Before setting ph->pon_keys or ph->poff_keys, free it if it has already values. (iiimcf_setimvalues): Before setting object descriptors, call free_object_descriptor() and reset pbobjdesc and object_descriptor_size. (iiimcf_hungup): Don't clear pplangs, pobjedesc, pon_keys, nor poff_keys. 2003-04-23 MIYASHITA Hisashi * clientenv.c (iiimcf_client_os_arch): New static function. (iiimcf_create_client_env): Refactored. It takes IIIMCF_attr and set the proper data to IIIMCF_client_env from it. And made it set X_display_name and X_server_vendor as well. * context.c (create_icattribute): Make it use IIIMCF_attr to obtain IC attribute data. (iiimcf_create_context): Now it only call create_icattribute to get attribute data from "attr". * iiimcfint.h (iiimcf_create_client_env): Modify the arguments. Now it accepts IIIMCF_attr. * iiimcf.c (iiimcf_create_handle): Don't get client data from attr by itself, only pass attr to iiimcf_create_client_env. 2003-04-22 MIYASHITA Hisashi * libiiimcf.sym: Add iiimcf_reset_context, iiimcf_create_seticfocus_event, and iiimcf_create_unseticfocus_event. * context.c (reset_context): New function. (invalidate_context): Use reset_context. (iiimcf_reset_context): New API. * event.c (iiimcf_delete_event_storage): Delete queue only if pc->ppevqueue is not NULL. Clear all the members related to event queue. * event.c (broadcast): Don't treat IIIMF_STATUS_COMPONENT_INDIFFERENT as an error status. (iiimcf_create_seticfocus_event, forward_seticfocus) (iiimcf_create_unseticfocus_event, forward_unseticfocus) (iiimcf_create_resetic_event, forward_resetic): New functions. * configure.ac: Set the minor version to 1. * context.c (iiimcf_create_context): Bug fix. Set auto_trigger_notify_flag if st is IIIMF_STATUS_SUCCESS. * event.c (iiimcf_dispatch_event): Changed how to treat a return status from a component. When at least one component returns IIIMF_STATUS_COMPONENT_FAIL, iiimcf_dispatch_event must return IIIMF_STATUS_COMPONENT_FAIL as well; only when all of the components return IIIMF_STATUS_COMPONENT_INDIFFERENT, iiimcf_dispatch_event must return IIIMF_STATUS_COMPONENT_INDIFFERENT; if a component returns any other error status, iiimcf_dispatch_event must immediately return the error status. * component.c (iiimcf_component_UI): Return IIIMF_STATUS_COMPONENT_INDIFFERENT. (iiimcf_component_UI_preedit): Ditto. (iiimcf_component_UI_status): Ditto. (iiimcf_component_UI_lookup_choice): Ditto. (iiimcf_component_UI_commit): Ditto. (iiimcf_component_event): Ditto. (iiimcf_component_event_key): Ditto. (iiimcf_component_event_trigger_notify): Ditto. (iiimcf_component_AUX): Ditto. * iiimcf.c (iiimcf_initialize): Don't doubly initialize the library. 2003-03-27 MIYASHITA Hisashi * configure.ac (AC_INIT) (LIBIIIMCF_MAJOR_VERSION, LIBIIIMCF_MINOR_VERSION): Set version to 1.0. 2003-03-26 MIYASHITA Hisashi * Makefile.am (libiiimcf_la_SOURCES): Add iiimcfint.h as well. (include_HEADERS): Install a public header file, iiimcf.h. * Makefile.am (libdir): Commented out. 2003-03-26 MIYASHITA Hisashi * Makefile.am (libiiimcf_la_LDFLAGS): Limit exported symbols listed in libiiimcf.sym. Add a dependency of libiiimp. (libiiimcf_la_LIBADD): Statically link it with libEIMIL. * test/Qt/IIIMLineEdit.pro (LIBS): Don't explicitly link with libEIMIL. * test/check/Makefile.am (TEST_LIBS): Likewise. 2003-03-25 MIYASHITA Hisashi * message.c (iiimcf_request_message): When ph->disable_automatic_connection_restoration is set, we don't restore the connection. * iiimcfint.h (IIIMCF_handle_rec): Add disable_automatic_connection_restoration. * iiimcf.c (iiimcf_create_handle): Deal with IIIMCF_ATTR_DISABLE_AUTOMATIC_RESTORATION attribute. * context.c (invalidate_context): Don't reset IIIMCF_CONTEXT_CONVERSION_MODE. (iiimcf_enable_context): Restore the conversion mode of "pc". 2003-03-20 MIYASHITA Hisashi * libiiimcf.sym: New file. It has all exported symbols. * message.c (iiimcf_request_message): New function. * iiimcfint.h: If HAVE_NO_THREAD is defined, include threaddef.h. (IIIMCF_handle_rec): Define a sync object, "so" if possible. (IIIMCF_LOCK_HANDLE, IIIMCF_UNLOCK_HANDLE): New macros. * context.c (add_context): LOCK_HANDLE while manipulating pptbl. (remove_context): Likewise. (iiimcf_enable_context): Don't check status of the connection here because iiimcf_request_mesasge() is responsible for it. * component.c (iiimcf_component_AUX): Renamed from iiimcf_component_aux. * aux.c (iiimcf_forward_aux_setvalues): Substitute iiimcf_request_message() for sending and receiving message operations. * context.c (iiimcf_enable_context): Likewise. (iiimcf_destroy_context): Likewise. * event.c (forward_keyevent): Likewise. * object.c (get_imvalues): Likewise. * trigger.c (iiimcf_forward_trigger_notify): Likewise. 2003-03-17 MIYASHITA Hisashi * component.c (org.OpenI18N.IIIMCF.AUX): Renamed from org.OpenI18N.IIIMCF.aux. 2003-03-13 MIYASHITA Hisashi * iiimcfint.h (IIIMCF_ICAttribute_rec): New structure. (IIIMCF_CONTEXT_STATE_FLAGS): Add IIIMCF_CONTEXT_BROADCASTING. (IIIMCF_context_rec): Add icattr of IIIMCF_ICAttribute_rec. (IIIMCF_IS_BROADCASTING): New macro. (iiimcf_connect): New function declaration. (iiimcf_cleanup_context, iiimcf_enable_context): Ditto. (iiimcf_broadcast_event): Ditto. * iiimcf.c (iiimcf_connect): Make it has an external linkage (i.e. non-static). And create ph->data_s and ph->pstream here. (iiimcf_hungup): New function. (iiimcf_cleanup): Removed. (iiimcf_disconnect): Don't call iiimcf_cleanup(), call iiimcf_cleanup_context instead. And if ph is not connected, don't request IM_DISCONNECT. (iiimcf_send_message): If the connection is closed, call iiimcf_hungup(). (iiimcf_receive_message): Likewise. (iiimcf_create_handle): In here, don't create data_s. If iiimcf_connect() fails, clean all data of ph and return immediately with failure. (iiimcf_destroy_handle): delete data_s and pstream only when each of them is not NULL. * event.c (broadcast, iiimcf_broadcast_event): New functions. (iiimcf_forward_event): Even if the context is invalid, try to enable it again. (iiimcf_dispatch_event): If we are broadcasting, return immediately with success. And even if a component returns IIIMF_STATUS_COMPONENT_FAIL, proceed to dispatch the event to the rest of components. * context.c: Include string.h for strdup(). (invalidate_context): Broadcast IIIMCF_EVENT_TYPE_RESET. Reset IIIMCF_CONTEXT_PREEDIT_ENABLED, IIIMCF_CONTEXT_LOOKUP_CHOICE_ENABLED, IIIMCF_CONTEXT_STATUS_ENABLED, IIIMCF_CONTEXT_COMMITTED_TEXT_ENABLED, and IIIMCF_CONTEXT_CONVERSION_MODE. Remove the context from the table in ph. (create_icattribute): New function. It replaced convert_language() and convert_input_method(). (conver_language, convert_input_method): Removed. (free_icattribute): New function. (iiimcf_cleanup_context): New function. (create_iiimp_icattr): New function. (iiimcf_enable_context): New function. (iiimcf_create_context): Use create_icattribute() to set up IC attribute, then set ic_id to -1 to invalidate a newly created context, then call iiimcf_enable_context(). (iiimcf_destroy_context): Even if failing to request IM_DESTROYIC, continue to destory the context. Broadcast IIIMCF_EVENT_TYPE_DESTROY. And call free_icattribute(). * component.c (iiimcf_component_UI, iiimcf_component_UI_preedit) (iiimcf_component_UI_status, iiimcf_component_UI_lookup_choice) (iiimcf_component_UI_commit, iiimcf_component_event): Don't dispatch IIIMCF_EVENT_TYPE_RESET event because we introduced broadcasting to all components for such emergency events. * aux.c (iiimcf_get_aux_draw_data): If context is invalid, return immediately. 2003-03-12 MIYASHITA Hisashi * iiimcfint.h (IIIMCF_context_rec): Add attr. * context.c (iiimcf_destroy_context): If pc->attr is not NULL, call iiimcf_destroy_attr() on it. (iiimcf_context_get_attr): New API. * configure.ac (LIBIIIMCF_MAJOR_VERSION) (LIBIIIMCF_MINOR_VERSION): Set them to AH_TEMPLATE, and do AC_DEFINE to define them in config.h. * iiimcfint.h (IIIMCF_PROTOCOL_VERSION_MASK): New enumerator. * iiimcf.c (iiimcf_get_version_number): New function. 2003-03-11 MIYASHITA Hisashi * event.c (iiimcf_receive_forwarded_event): Change how to call iiimcf_create_keyevent. * event.c (iiimcf_create_keyevent): Make the first argument "const IIIMCF_keyevent*". Caution that this involves API change! * component.c (iiimcf_component_event) (iiimcf_component_event_key) (iiimcf_component_event_trigger_notify) (iiimcf_component_aux): Actually implemented. 2003-03-10 MIYASHITA Hisashi * component.c (iiimcf_get_component): Set the result to *pcomponent. * object.c (iiimcf_delete_all_downloaded_objects): Before deleting po, save the next pointer to po2. 2003-03-09 MIYASHITA Hisashi * iiimcfint.h (iiimcf_store_simple_event): New function declaration. (iiimcf_dispatch_simple_event): Removed. * event.c (expand_event_queue): ppev_pro may exceed ppevqueue vector only by 1, so fix the comment and the start pointer of ppev_npro. (iiimcf_store_event): When ppev_pro point at the end of the queue, if queue is full, call expand_event_queue(); otherwise, set ppev_pro to the first slot. (iiimcf_get_event): Bug fix. If ppev_con points to the end, set it to the first slot. (iiimcf_dispatch_simple_event): Removed. (iiimcf_store_simple_event): New function. * commit.c (iiimcf_commit_string): Don't dispatch an event directory. First, store it. * lookup_choice.c (iiimcf_lookup_choice_start) (iiimcf_lookup_choice_done): Likewise. * preedit.c (iiimcf_toggle_preedit, iiimcf_update_preedit): Likewise. * status.c (iiimcf_toggle_status, iiimcf_update_status): Likewise. * trigger.c (iiimcf_receive_trigger_notify): Likewise. 2003-03-09 MIYASHITA Hisashi * commit.c (iiimcf_get_committed_text): Return IIIMF_STATUS_NO_COMMITTED_TEXT not IIIMF_STATUS_NO_STATUS_TEXT. * aux.c (iiimcf_update_aux_draw): When pimad->integer_value is NULL, regard it has no integer value. And don't doubly free used slots in pstrs. 2003-03-07 MIYASHITA Hisashi * trigger.c (iiimcf_receive_trigger_notify): Dispatch an event. * status.c (iiimcf_toggle_status, iiimcf_update_status): Dispatch an event. * preedit.c (iiimcf_toggle_preedit, iiimcf_update_preedit): Dispatch an event. * lookup_choice.c (iiimcf_lookup_choice_start): Dispatch an event. (iiimcf_lookup_choice_done): Likewise. (iiimcf_update_lookup_choice): Likewise. * iiimcfint.h (IIIMCF_auxevent): Add "independent". (IIIMCF_event_rec): Change the type of the value of aux event to pointer of IIIMCF_auxevent. (IIIMCF_component_rec): Add pprev. (IIIMCF_aux_rec): Rename "pstr" to "pstrs". (iiimcf_dispatch_simple_event): New function declaration. * iiimcf.c (iiimcf_create_handle): Call iiimcf_register_predefined_components(). * event.c (delete_event): Call iiimcf_delete_aux_event also in case of IIIMCF_EVENT_TYPE_AUX_START, IIIMCF_EVENT_TYPE_AUX_DRAW, and IIIMCF_EVENT_TYPE_AUX_DONE. (iiimcf_dispatch_simple_event): New function. * component.c (iiimcf_component_UI, iiimcf_component_UI_preedit) (iiimcf_component_UI_status, iiimcf_component_UI_lookup_choice) (iiimcf_component_UI_commit, iiimcf_component_event) (iiimcf_component_event_key) (iiimcf_component_event_trigger_notify): Renamed. (iiimcf_component_aux): New function. (IIIMCF_component_tree): New type. (predefined_root, predefined_UI, predefined_event): New IIIMCF_component_tree data. (register_component_tree): New function. (iiimcf_register_predefined_components): Actually register the predefined components. (iiimcf_delete_all_components): Delete all components by scanning proot_component list. (iiimcf_register_component): Set "pprev". (iiimcf_unregister_component): Remove the component from the linked list. * commit.c (iiimcf_commit_string): Dispatch an event. * aux.c (iiimcf_enable_aux): Dispatch IIIMCF_EVENT_TYPE_AUX_START event. (iiimcf_update_aux_draw): Dispatch IIIMCF_EVENT_TYPE_AUX_DRAW event. (iiimcf_disable_aux): Dispatch IIIMCF_EVENT_TYPE_AUX_DONE event. (iiimcf_UTF16_strncmp): Regard pstr2 as a 0-terminated string. (create_aux_event): New function. (iiimcf_forward_aux_setvalues): Now pauxevent in IIIMCF_event_rec is a pointer, not object itself, thus change how to access it. (iiimcf_delete_aux_event): Take the above change into consideration, and if independent is not set, don't free the members. (iiimcf_get_aux_draw_data): When pnum_intvals, ppintvals, pnum_strvals, or ppstrvals is NULL, don't set the corresponding value. (iiimcf_create_aux_setvalues_event): Set independent to 1. (iiimcf_get_aux_event_value): New function. 2003-03-01 MIYASHITA Hisashi * Makefile.am (libiiimcf_la_SOURCES): Add trigger.c. * trigger.c: New file. * message.c (iiimcf_process_message): Call iiimcf_receive_trigger_notify() and reply to the message. * iiimcfint.h (IIIMCF_IS_STATIC_EVENT_FLOW): New macro. (IIIMCF_IS_KEYEVENT_EQUAL): Ditto. (iiimcf_receive_trigger_notify, iiimcf_process_trigger_keyevent) (iiimcf_forward_trigger_notify): New function declarations. * event.c (iiimcf_create_trigger_notify_event): Moved to trigger.c. (iiimcf_get_trigger_notify_flag): Ditto. (forward_keyevent): When IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY is enabled, call iiimcf_process_trigger_keyevent() before forwarding, then if it processes keyevent as a trigger key, return immediately. (forward_keyevent): If the current event flow is dynamic, and the current conversion mode is disabled, don't forward the keyevent. (send_trigger_notify): Moved to trigger.c. It is renamed to iiimcf_forward_trigger_notify(). (iiimcf_forward_event): Call iiimcf_forward_trigger_notify() instead of send_trigger_notify(). * context.c (iiimcf_create_context): Bug fix. When IIIMCF_ATTR_DISABLE_AUTOMATIC_TRIGGER_NOTIFY is not specified, set auto_trigger_notify_flag to 1. 2003-02-28 MIYASHITA Hisashi * aux.c (iiimcf_enable_aux, iiimcf_disable_aux): Correct the assertions. * test/Makefile.am (SUBDIRS): Add check. * object.c (iiimcf_get_downloaded_objects): Renamed from iiimcf_get_objects(). And fix the type of the argument to receive downloaded objects. * iiimcf.c (iiimcf_finalize): Return IIIMF_STATUS_SUCCESS. * configure.ac (AC_OUTPUT): Add test/check/Makefile. * Makefile.am (SUBDIRS): Add test. 2003-02-26 MIYASHITA Hisashi * Makefile.am (libiiimcf_la_SOURCES): Add aux.c. * message.c (iiimcf_process_message): Deal with the messages, IM_AUX_START, IM_AUX_DRAW, and IM_AUX_DONE. * iiimcfint.h (IIIMCF_auxevent): New structure. (IIIMCF_event_rec): Add auxevent in v. (IIIMCF_aux_rec): Introduce a new member, mode. Rename nam_strings to num_strvals. (iiimcf_make_string): Declare str as a constant string. (iiimcf_string_length, iiimcf_duplicate_string): New function declaration. (iiimcf_make_event): Ditto. (iiimcf_enable_aux, iiimcf_update_aux_draw) (iiimcf_disable_aux, iiimcf_delete_all_aux_data) (iiimcf_delete_aux_event): Ditto. * iiimcf.c (iiimcf_make_string): Make "str" constant. (iiimcf_string_length): New function. * event.c (delete_event): Deal with the case of IIIMCF_EVENT_TYPE_AUX_SETVALUES. (iiimcf_make_event): New function. (iiimcf_delete_event_storage): Only if *ppe is NULL, call delete_event() for it. (iiimcf_create_keyevent): Use iiimcf_make_event. (iiimcf_create_trigger_notify_event): Likewise. (iiimcf_forward_event): Deal with the case of IIIMCF_EVENT_TYPE_AUX_SETVALUES. * context.c (iiimcf_destroy_context): Call iiimcf_delete_all_aux_data() before exitting. * aux.c: New file. 2003-02-23 MIYASHITA Hisashi * object.c: New file. * Makefile.am (libiiimcf_la_SOURCES): Add object.c. * message.c (iiimcf_process_message): Call iiimcf_setimvalues(). * iiimcf.c (iiimcf_make_string): New function. (iiimcf_setimvalues): New function. (free_object_descriptor): New function. (iiimcf_destroy_handle): Call iiimcf_delete_all_downloaded_objects() and free_object_descriptor(). (iiimcf_get_object_descriptor_list): New function. * iiimcfint.h (IIIMCF_downloaded_object_rec, IIIMCF_aux_rec): New structures. (IIIMCF_handle_rec): Add new members, object_descriptor_size, pobjdesc, and pdownloaded_objs. (IIIMCF_context_rec): Add a new member, paux. (iiimcf_make_string): New function declaration. (iiimcf_setimvalues): Ditto. (iiimcf_delete_all_downloaded_objects): Ditto. * component.c (IIIMCF_component_UI, IIIMCF_component_UI_preedit) (IIIMCF_component_UI_status, IIIMCF_component_UI_lookup_choice) (IIIMCF_component_UI_commit): Implemented. * attr.c (find_slot): Bug fix. When pa is NULL, return NULL immediately. 2003-02-14 MIYASHITA Hisashi * iiimcf.c (iiimcf_create_handle): Use iiimcf_attr_get_string_value instead of iiimcf_get_attr_value when obtaining a strinng value, * context.c (iiimcf_create_context): Use iiimcf_attr_get_ptr_value instead of iiimcf_get_attr_value when obtaining a pointer value, use iiimcf_attr_get_integer_value when obtaining an integer value. * attr.c (iiimcf_destroy_attr): Free pa->pslots because IIIMCF_attr_rec was changed. (find_slot): New function. (alloc_slot): New function. (iiimcf_attr_put_string_value): New function. (iiimcf_attr_get_string_value): Ditto. (iiimcf_attr_put_integer_value): Ditto. (iiimcf_attr_get_integer_value): Ditto. (iiimcf_attr_put_ptr_value): Ditto. (iiimcf_attr_get_ptr_value): Ditto. (iiimcf_get_attr_value, iiimcf_put_attr_value): Removed. These are replaced with the above new function. * iiimcfint.h (IIIMCF_attr_type): New enumerator. (IIIMCF_attr_slot): New structure. (IIIMCF_attr_rec): Now it has the array of IIIMCF_attr_slot, not the array of IIIMCF_attr_value. 2003-02-08 MIYASHITA Hisashi * clientenv.c (iiimcf_create_client_env): Add a new argument clientname. (iiimcf_create_client_descriptor_message): This function replaces iiimcf_send_client_descriptor. That makes an im_setimvalues message that have a client descriptor. * iiimcf.c (iiimcf_connect): Send client descriptor. (iiimcf_create_handle): Make addr, serv, username, and password constant string. (iiimcf_create_handle): When IIIMCF_ATTR_CLIENT_TYPE is specified in attr, pass it to iiimcf_create_client_env. * context.c (iiimcf_create_context): When IIIMCF_ATTR_DISABLE_AUTOMATIC_TRIGGER_NOTIFY is set to true, reset IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY, otherwise set it. * iiimcfint.h (IIIMCF_CONTEXT_STATE_FLAGS): Add IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY and IIIMCF_CONTEXT_CONVERSION_MODE. (iiimcf_create_client_env): Add a new argument, clientype. (iiimcf_create_client_descriptor_message): New function declaration, which replace iiimcf_send_client_descriptor. 2003-02-07 MIYASHITA Hisashi * IIIMPEIMIL.c (EIMIL_construct_mtext_from_iiimp_text): Free pstrh, which is a temporary buffer. * context.c (iiimcf_destroy_context): When waiting for IM_DESTROYIC_REPLY, pc is also used for matching condition. * text.c (iiimcf_update_text_by_preedit_draw): Destruct pbase->pv_mtext. * event.c (iiimcf_get_next_event): Set refcount to 0. (iiimcf_peek_next_event): Set refcount to 1. (iiimcf_ignore_event): New API. * component.c (iiimcf_delete_all_components): Don't apply iiimcf_unregister_component to NULL pointer. 2003-02-06 MIYASHITA Hisashi * message.c (iiimcf_process_message): Call iiimcf_register_trigger_keys(). * event.c (iiimcf_dispatch_event): Implement the actual interface invocation part. * iiimcf.c (iiimcf_register_trigger_keys): New function. (iiimcf_destroy_handle): When ph->pon_keys or ph->poff_keys is not NULL, free them. (iiimcf_get_trigger_keys): New API. * iiimcfint.h (IIIMCF_component_rec): New structure. (IIIMCF_keyevent_rec): Removed. (IIIMCF_handle_rec): Add new members, num_on_keys, pon_keys, num_off_keys, and poff_keys. (IIIMCF_handle_rec): Add a new member, proot_component. (IIIMCF_CONTEXT_STATE_FLAGS): Add a new constant, IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY. (iiimcf_register_trigger_keys): New function declaration. (iiimcf_delete_all_components): Ditto. * Makefile.am (libiiimcf_la_SOURCES): Add component.c. * Makefile.in: Updated. * component.c: New file. 2003-02-04 MIYASHITA Hisashi * commit.c (iiimcf_commit_string): ASSERT() must be placed after variable definitions. * context.c (remove_context): Now this functiont takes only one argument, IIIMCF_context_rec* pc. The handle is taken from "pc". (iiimcf_destroy_context): Call remove_context() and iiimcf_delete_event_storage(). * event.c (IIIMCF_EVENT_QUEUE_INITIAL_SLOTS_SIZE): New macro. (IIIMCF_EVENT_STACK_INITIAL_SLOTS_SIZE): New macro. (IIIMCF_EVENT_STACK): New macro, but currently undefined. (IIIMCF_EVENT_ADDREF, IIIMCF_EVENT_RMREF, IIIMCF_EVENT_REFCHK): New macros. (expand_event_queue, iiimcf_store_event, iiimcf_get_event): New functions. (expand_event_stack, iiimcf_push_event, iiimcf_pop_event): New functions, but they would be defined if IIIMCF_EVENT_STACK were defined. So currently they are not defined. (iiimcf_forward_event): Use IIIMCF_EVENT_REFCHK, not directly call delete_event(). (iiimcf_receive_forward_event): Implemented. (iiimcf_dispatch_event): Made only a brief skelton. (iiimcf_get_next_event): Implemented. (iiimcf_peek_next_event): Ditto. * iiimcfint.h (IIIMCF_event_rec): Add a new field, refcount. (IIIMCF_context_rec): Add new fields, evqueue_size, ppev_pro, ppev_con, and ppevqueue. (iiimcf_store_event, iiimcf_get_event, iiimcf_delete_event_storage): New function declarations. 2003-02-01 MIYASHITA Hisashi * message.c (iiimcf_process_message): Call iiimcf_lookup_choice_start instead of iiimcf_toggle_lookup_choice. (iiimcf_process_message): New case. (iiimcf_process_message): Call iiimcf_lookup_choice_done instead of iiimcf_toggle_lookup_choice. * text.c (iiimcf_destruct_text): Clear pt with 0. (iiimcf_duplicate_text): New API. (iiimcf_destroy_text): New API. * status.c (iiimcf_update_status): Turn on IIIMCF_CONTEXT_STATUS_ENABLED. * lookup_choice.c (IIIMCF_LOOKUP_CHOICE_LABEL_INDEX_SIZE_MAX): New macro. (iiimcf_toggle_lookup_choice): Removed. (iiimcf_lookup_choice_start): New function. (iiimcf_update_lookup_choice): Implement it. (iiimcf_process_lookup_choice): New function. (iiimcf_get_lookup_choice_size): Add new arguments, pindex_of_first_candidate, pindex_of_last_candidate, and pindex_of_current_candidate. (iiimcf_get_lookup_choice_configuration): New API. (iiimcf_get_lookup_choice_title): New API. (iiimcf_destruct_lookup_choice): Destruct all texts and arrays owned by pl, not free pl itself. * iiimcfint.h (IIIMCF_lookup_choice_rec): Add new members. (iiimcf_toggle_lookup_choice): Add the function declaration. (iiimcf_lookup_choice_start): Ditto. (iiimcf_process_lookup_choice): Ditto. (iiimcf_lookup_choice_done): Ditto. (iiimcf_toggle_lookup_choice): Removed. (iiimcf_construct_text_from_UTF8): Add the function declaration. 2003-01-29 MIYASHITA Hisashi * commit.c: Change the comment. * IIIMPEIMIL.c (EIMIL_construct_mtext_from_iiimp_text): Bug fix. Properly set cur_fid0_* whenever pfa->feedback changes. * text.c (iiimcf_get_char_with_feedback): Bug fix. Check the type of pv only if pv is not NULL, and the type must be EIMIL_TYPE_PROP. 2003-01-28 MIYASHITA Hisashi * Makefile.am (SUBDIRS): Don't include test. (libiiimcf_la_SOURCES): Add clientenv.c * Makefile.in: Updated. * IIIMPEIMIL.c (set_feedback_prop): Bug fix. Add index number as well. (EIMIL_construct_mtext_from_iiimp_text): Properly set cur_fid0_st and cur_fid0_val if pfa->feedback is not 0. * text.c: When pstr is empty, set pv_mtext to NULL. (update_text): When pt->pv_mtext is NULL, set pt->pu16 to NULL, and pt->len to 0. (iiimcf_convert_iiimp_string_to_text): Reset updated flag. When pstr is empty, set pv_mtext to NULL. (iiimcf_convert_iiimp_text_to_text): Likewise. (iiimcf_convert_iiimp_contents_to_text): Don't call EIMIL_construct_mtext_from_iiimp_contents(). Instead, call iiimcf_convert_iiimp_text_to_text or iiimcf_convert_iiimp_string_to_text by inspecting type by itself. * status.c (iiimcf_toggle_status): Fix the macro name of IIIMCF_IS_ENABLED. * preedit.c (iiimcf_toggle_preedit): Fix the macro name of IIIMCF_IS_ENABLED. * lookup_choice.c (iiimcf_toggle_lookup_choice): Fix the macro name of IIIMCF_IS_ENABLED. (iiimcf_destruct_lookup_choice): New function. * iiimcf.c (IIIMCF_DEFAULT_TIMEOUT): New macro. (iiimcf_unregister_langs): New function. (iiimcf_register_langs): Ditto. (iiimcf_connect): To create IM_CONNECT message, use iiimcf_create_im_connect_message(). Use iiimf_stream_send() instead of iiimf_send_message(). Register language list in IM_CONNECT_REPLY message. (iiimcf_disconnect): Use iiimf_stream_send() instead of iiimf_send_message(). (iiimcf_send_message): Ditto. And don't call iiimcf_check_connection. Check the return value of iiimf_stream_send() instead. (iiimcf_receive_message): Don't check if ph has already been connected because this function may be called during initiations. And don't call iiimcf_check_connection. Check the return value of iiimf_stream_send() instead. (iiimcf_create_handle): Init. ph with 0. Not use iiimf_im_new(). Use iiimf_connect_socket_stream() to initalize stream. Call iiimcf_create_client_env(). (iiimcf_destroy_handle): Implemente it. (iiimcf_get_supported_languages, iiimcf_get_language_id): New function. * iiimcfint.h (IIIMCF_client_env): New structure. (IIIMCF_handle_rec): New members, pstream and penv. pim was removed. pinput_methods was renamed to ppinput_method, and its type was changed to IIIMCF_input_method_rec**. plangs was renamed to pplangs, and its type was changed to IIIMCF_language_rec**. (IIIMCF_input_method_rec): lang_num is renames to num_langs. (IIIMCF_event_rec): Add number to v. (iiimcf_destruct_lookup_choice): New function declaration. (iiimcf_create_client_env): Ditto. (iiimcf_delete_client_env): Ditto. (iiimcf_create_im_connect_message): Ditto. (iiimcf_send_client_descriptor): Ditto. * event.c (delete_event): New function. (iiimcf_create_trigger_notify_event): New function. (iiimcf_get_keyevent_value): If pe->type is not IIIMCF_EVENT_TYPE_KEYEVENT, return IIIMF_STATUS_ARGUMENT. (iiimcf_get_trigger_notify_flag): New function. (send_trigger_notify): New function. (iiimcf_forward_event): Deal with IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY. * context.c (convert_language): Don't delete pimstr, because it becomes a part of picattr. (convert_input_method): Likewise. (iiimcf_destroy_context): Fix typo. (iiimcf_is_UIstate_changed): New function. * attr.c (iiimcf_create_attr): Bug fix. Init the whole of pa with 0. (iiimcf_put_attr_value): When pa is NULL, return IIIMF_STATUS_ARGUMENT. (iiimcf_get_attr_value): When pa is NULL, return IIIMF_STATUS_NO_ATTR_VALUE. * clientenv.c: New file. 2003-01-21 MIYASHITA Hisashi * Import first version.