Build tweaks, and updated version number for Beta2.
[platform/core/uifw/at-spi2-atk.git] / ChangeLog
index 90db9f4..e5ea932 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2002-10-01  Bill Haneman <bill.haneman@sun.com>
+
+       * configure.in:
+       Update version number to 0.4 for Beta2.
+       
+       * libspi/accessible.c, libspi/accessible.h:
+       Expose spi_accessible_construct, to enable libgail-gnome
+       construction from spi_accessible subtype.
+
+       * utils/magnifier.c:
+       Workaround for bug in some non-gnome-compliant window managers
+       which made magnifier resize improperly.
+
+2002-09-01  Bill Haneman <bill.haneman@sun.com>
+
+       * libspi/accessible.c: (spi_accessible_new) :
+       Move the test for SPI_IS_REMOTE_OBJECT to
+       spi_accessible_new_return, fixing a bug and compile time warning.
+       
+2002-01-08  Michael Meeks  <michael@ximian.com>
+
+       * registryd/registry.c (parse_event_type): remove strndup.
+
+       * libspi/Makefile.am (libspi_la_SOURCES): remove
+       sources already included in the headers section.
+
+       * libspi/util.c: add.
+
+       * libspi/spi-private.h: add.
+
+       * registryd/registry.c: update to moved list iterators.
+
+2002-01-05  Michael Meeks  <michael@ximian.com>
+
+       * test/simple-at.c (main): upd. auto-module set to atk-bridge
+
+       * test/test-simple.c (main): ditto.
+
+2002-01-04  Michael Meeks  <michael@ximian.com>
+
+       * libspi/accessible.c (spi_accessible_new): remove 2nd,
+       redundant construct.
+
+       * registryd/registry.c
+       (get_listener_list): impl.
+       (impl_accessibility_registry_register_global_event_listener):
+       re-impl. to simplify using ~, remove dodgy const cast off.
+       (parse_event_type): constify.
+       (impl_accessibility_registry_deregister_global_event_listener_all): 
+       re-write, more efficiency and simplicity, kill re-enterancy
+       hazard.
+       (compare_listener_corbaref, compare_corba_objects),
+       (compare_listener_quarks): define out.
+       (impl_accessibility_registry_deregister_global_event_listener): 
+       re-write for effiency, and nail re-enterancy hazard.
+       (impl_accessibility_registry_get_desktop_list): impl.
+       (re_enterant_list_delete_link): impl.
+       (re_enterant_list_foreach): impl.
+       (remove_listener_cb): impl.
+       (_registry_notify_listeners): kill.
+       (notify_listeners_cb): impl.
+
+       * cspi/spi_registry.c (SPI_freeDesktopList): impl.
+       (SPI_getDesktopList): impl.
+
+       * test/test-simple.c (test_desktop): test the methods.
+
+2002-01-03  Michael Meeks  <michael@ximian.com>
+
+       * cspi/spi_event.c (SPI_createAccessibleKeySet): dup the
+       keystrings since we free them
+       (SPI_freeAccessibleKeySet): in here.
+
+       * libspi/accessible.c (spi_accessible_new): kill warning,
+       wonder what is going on with the constructor here.
+
+2002-03-01  Bill Haneman <bill.haneman@sun.com>
+
+       * libspi/accessible.c (spi_accessible_new ()) :
+       Added check to see if AtkObject is an SpiRemoteObject before
+       creating an SpiAccessible.
+       
+2002-05-01  Bill Haneman <bill.haneman@sun.com>
+
+       * registryd/deviceeventcontroller.c (spi_controller_grab_keyboard):
+       Enable keygrabs using the Control modifier, now that they are
+       working properly (they were previously disabled).
+
+       * test/simple-at.c:
+       Change the command keygrab for this demo to "Control+Alt", so as
+       to conflict with fewer other key commands on the system; this
+       means that the quit command for "simple-at" is now "Ctrl-Alt-q".
+
+       Removed a pointlessly-chatty keylistener for unshifted keys
+       (shifted keys are still reported).
+       
+2002-02-01  Bill Haneman <bill.haneman@sun.com>
+
+       * libspi/remoteobject.h:
+       * libspi/remoteobject.c:
+       Added definitions for special AtkObject subtype, required for
+       support of remote components (specifically, used by BonoboControl
+       accessibility implementation).
+       
+2002-01-02 Marc Mulcahy  <marc.mulcahy@sun.com>
+
+       * cspi/spi.h: synched relation types with ATK
+
+       * cspi/spi_accessible.c: Added implementations of
+       AcccessibleRelation_* methods
+
+       * idl/Accessibility_Relation.idl: added getRelationTypeName
+       method.  Synched known relation types with ATK.  Allowed for
+       relation type extension with the RELATION_EXTENDED type.
+       
+       * libspi/relation.c: Provided implementations for
+       AccessibleRelation methods.
+
+2002-01-01  Bill Haneman <bill.haneman@sun.com>
+
+       API tweaks for today's API 'freeze'.
+
+       * idl/*:
+       Added placeholder functions to allow future compatible expansion
+       of the IDL interfaces.
+
+       * idl/Accessibility_Registry.idl:
+       Changed generateKeyEvent to generateKeyboardEvent.  Changed
+       signature of this method to accept an optional keystring in
+       parameter (for complex text input synthesis) and changed use of
+       simple 'boolean' parameter in registerKeystrokeListener to a
+       struct, EventListenerMode.
+
+       * cspi/spi_accessible.c:
+       * cspi/spi.h:
+       * cspi/spi_streamablecontent.c:
+       Added references to AccessibleStreamableContent interface, and
+       definition and implementation of AccessibleStreamableContent 
+       C bindings.
+
+       * cspi/spi_registry.c:
+       * cspi/spi.h:
+       Changed generateKeyEvent API to generateKeyboardEvent,
+       taking a new (optional) keystring parameter to support complex
+       text input.
+       
+       * at-bridge/*:
+       * atk-bridge/*:
+       Renamed directory (to better reflect its actual purpose, bridging
+       from at-spi to ATK).  The .so module is also now named
+       libatk-bridge.so.
+
+       * idl/Accessibility_Hypertext.idl:
+       * libspi/accessible.c:
+       * libspi/hypertext.h:
+       * libspi/hypertext.c:
+       Changed Accessibility_Hypertext to *not* derive from
+       Accessibility_Text.
+
+       * cspi/spi_registry.c:
+       Added list of legal event type names for 'window' events, which
+       completes the registry event API.
+
+2001-12-22  Marc Mulcahy  <marc.mulcahy@sun.com>
+
+       * at-bridge/bridge.c: Added registration for separate
+       "Atktext:text-changed::insert" and "AtkText:text-changed::delete"
+       signals.  If either of the first two parameters to the generic
+       bridge signal handler are ints, they are passed on as event
+       details.  This allows an AT to determine what text was inserted.
+
+2001-12-21  Bill Haneman <bill.haneman@sun.com>
+
+       * registryd/deviceeventcontroller.c:
+       Fixed regressions in generateKeyEvent caused by the removal of
+       gdk_init from registryd; we now use pure X calls to connect to the
+       display, which makes sense because deviceeventcontroller already
+       uses a fair bit of X API (should eventually be migrated to a
+       'portability layer').
+
+       * registryd/desktop.c:
+       Fixed minor regression in spi_desktop_init, changed the way the
+       desktop name is being set to work with new spi_base API
+       (gobject-based, rather than AtkObject-based).
+
+       * registryd/Makefile.am:
+       Minor revision of makefile to use XTST_LIBS variable rather than
+       hard-wiring the Xtst LD_ADD element.
+
+       * test/keysynth-demo.c:
+       Tweaked an output message; added initialization of the
+       'keystrings' member of the "switch listener" key_set.
+
+       * libspi/relation.c:
+       Squashed compile-time warning.
+
+       * libspi/accessible.c:
+       Cosmetic and formatting fixes, renamed a static method.
+       
+2001-12-18 Marc Mulcahy <marc.mulcahy@sun.com>
+
+       * libspi/accessible.c 
+       * libspi/action.c
+       * libspi/application.c 
+       * libspi/base.c 
+       * libspi/base.h
+       * libspi/component.c 
+       * libspi/editabletext.c
+       * libspi/hyperlink.c 
+       * libspi/hypertext.c
+       * libspi/image.c 
+       * libspi/selection.c 
+       * libspi/table.c
+       * libspi/text.c 
+       * libspi/value.c 
+       * registryd/desktop.c:
+       Changed SpiBase to contain a GObject pointer rather than an AtkObject
+
+2001-12-17  Bill Haneman <bill.haneman@sun.com>
+
+       * idl/Accessibility_Registry.idl:
+       Added boolean member 'is_text' to DeviceEvent.  This is for the
+       use of key events, and helps prevent ambiguity between composed
+       key strings and keysym names, since both may potentially be
+       returned in the 'event_string' member.
+
+       * at-bridge/bridge.c:
+       * registryd/deviceeventcontroller.c:
+       Use the 'is_text' member when notifying device event listeners.
+       Knon issue: composed characters are not dealt with correctly by
+       the global key listener implementation yet.
+       
+2001-12-17  Bill Haneman <bill.haneman@sun.com>
+
+       * at-bridge/bridge.c:
+       Namespaced local static methods to spi_atk_bridge_* where
+       previously named bridge_*, and spi_* elsewhere.
+
+       * at-bridge/bridge.c:
+       * cspi/bonobo/cspi-bonobo-listener.c:
+       Added demarshalling/conversion for string member of
+       Accessibility_DeviceEvent to AccessibleKeystroke.
+
+       * registryd/deviceeventcontroller.c:
+       Added code to fill the Accessibility_DeviceEvent key string value
+       member for global key events (i.e. from XGrabKey), to match
+       behavior of Accessibility_DeviceEvent from the toolkit key events
+       from the bridge.  Fixed timestamp in global key event notifications.
+
+       * test/simple-at.c:
+       Added printout of key event's string value to
+       report_ordinary_key_event, for demo/debugging purposes.
+
+2001-12-15  Bill Haneman <bill.haneman@sun.com>
+
+       * idl/Accessibility_Registry.idl:
+       Removed Accessibility_KeyStroke structure in favor of generic
+       Accessibility_DeviceEvent structure.
+       Changed Accessibility_ControllerEventMask from a struct to an
+       unsigned long.
+
+       * at-bridge/bridge.c:
+       Changed APIs to use DeviceEvent structure as above, and removed
+       bogus casting between these event structures.
+
+       * cspi/spi-listener.h:
+       Added keystring member of AccessibleKeystroke structure, to enable
+       matching on event "names" rather than only hardware codes and
+       keysyms.
+
+       * cspi/spi.h:
+       Added keystrings member of AccessibleKeySet struct, to allow
+       matching on event names (as above).
+       Added declarations for SPI_createAccessibleKeySet and
+       SPI_freeAccessibleKeySet.  Due to changes in libspi, we now pass
+       event modmasks directly as unsigned ints rather than structs with
+       refcounts, in the DeviceEventController methods.
+
+       * cspi/spi_registry.c:
+       Add SPI_createAccessibleKeySet and SPI_freeAccessibleKeySet methods.
+
+       * cspi/spi-roletypes.h:
+       Added documentation of newly added SPI Roles.
+
+       * cspi/bonobo/cspi-bonobo-listener.c:
+       Changes in support of API changes above.
+       
+       * libspi/accessible.c:
+       Converted APIs to use DeviceEvent structure (see IDL changes
+       above). 
+
+       * registryd/deviceeventcontroller.c:
+       Added DEControllerGrabMask structure to track keygrabs not only by
+       modmask but by keyset as well; this allows us to do "global"
+       (i.e. X) keygrabs on a per-key or keyset basis rather than always
+       grabbing on AnyKey and then filtering after-the-fact.
+       Bugfixes for event filtration mean that we don't get false matches
+       on SPI_KEY_RELEASED, when only SPI_KEY_PRESSED was requested.
+
+       * registryd/deviceeventcontroller.c:
+       Namespaced a number of static methods to use spi_ prefix.  Major
+       revision to internals of global (i.e. X) key grabs.
+
+       * registryd/deviceeventcontroller.h:
+       Removed keymask_list and added keygrabs_list to
+       SpiDeviceEventController struct.
+
+       * test/simple-at.c:
+       Added use of SPI_createAccessibleKeySet API when creating a
+       listener for only one key.  Attach a listener to "shift spacebar
+       SPI_KEY_RELEASE" as a demonstration.  Changed (incorrect) usage of
+       X key event names to SPI key event names, so that listeners are
+       registered for (SPI_KEY_PRESSED | SPI_KEY_RELEASED), for instance.
+       
+       * test/keysynth-demo.c:
+        Changed (incorrect) use of X key event names (KeyPressed,
+       KeyReleased) to SPI enums SPI_KEY_PRESSED and SPI_KEY_RELEASED.
+       
+
+2001-12-12  Bill Haneman <bill.haneman@sun.com>
+
+       * libspi/accessible.c:
+        Convert all AtkRole enumerations to Accessibility_Role enums when
+       getting a role from an AtkObject.
+       
+       * cspi/spi_accessible.c:
+       Complete the conversion of Accessibility_Role enums at runtime to
+       AccessibleRole (SPI_ROLE_*) roles in Accessible_getRole, so that
+       role enums correctly match those given in spi-roletypes.h.  
+       Re-synchronize the local names list for AccessibleRole_getName ().
+       AccessibleRole_getName is now deprecated, since it duplicates the
+       more reliable Accessible_getRoleName.
+       Added some role types from Accessibility_Role.idl.
+
+       * idl/Accessibility_Role.idl:
+       Added some role types used by AtkRole.
+
+2001-12-12  Bill Haneman <bill.haneman@sun.com>
+       
+       * cspi/spi.h:
+       * cspi/spi_registry.c:
+       * cspi/spi_event.c:
+       * cspi/cspi-bonobo-listener.c:
+       Namespaced all methods that did not begin with an "SPI_" or
+       "Accessible" prefix to "SPI_".  
+
+       * cspi/spi_main.c:
+       Homogenized internal function namespace to "cspi_" for statics.
+       
+       * test/*.c:
+       Patched tests to use the new CSPI API.
+
+       * docs/reference/cspi/at-spi-cspi-sections.txt:
+       Updated docs to reflect namespace changes, and added a number of
+       methods to the documentation.
+       
+       * registryd/registry.c:
+       Changed use of strings and string hashes in listener event
+       matching and parse_event_string to use GQuark, which is guaranteed
+       unique.
+       
+       * registryd/registry.h:
+       Squashed annoying warning.
+
+       * idl/Accessibility_Role.idl:
+       Extended range of available Accessibility_Role values.
+
+       * cspi/spi_accessible.c:
+       Re-ordered role names. 
+
+2001-12-12  Bill Haneman <bill.haneman@sun.com>
+
+       * idl/Accessibility_Value.idl:
+       Revert use of union back to CORBA_double, since the double type is
+       more efficient and can contain the other types without loss of
+       precision.
+
+       * idl/Accessibility_Accessible.idl:
+       Added method Accessibility:Accessible:getRoleName, to complement
+       Accessibility:Accessible:getRole.
+
+       * cspi/spi_accessible.c:
+       * cspi/spi.h:
+       Added C binding for above, Accessible_getRoleName (), and changed
+       signature of Accessible_getRole () to return an AccessibleRole.
+
+       * cspi/spi-roletypes.h:
+       Changed AccessibleRole_getName to return a char * instead of a
+       const char *.  This method is now at least temporarily deprecated 
+       in favor of asking Accessibles for their RoleNames directly.
+
+       * libspi/value.c:
+       Revert to match Accessibility_Value.idl;
+
+       * cspi/spi_value.c:
+       * cspi/spi.h:
+       Change signature of AccessibleValue methods to use double rather
+       than float.
+
+       * cspi/spi.h:
+       * cspi/spi_accessible.c:
+       Changed Accessible_getRole to return an AccessibleRole enum rather
+       than a UTF-8 string.  The UTF-8 string can still be obtained via
+       AccessibleRole_getName ().
+       
+       * test/test-simple.c:
+       Add test_action.  Small fixup to match API change to Accessible_getRole.
+
+       * libspi/action.c:
+       Bugfix for get_action_from_servant ().
+
+2001-12-11  Michael Meeks  <michael@ximian.com>
+
+       * libspi/libspi.h: remove registry.h and
+       desktop.h, deviceeventcontroller.h
+
+       * libspi/Makefile.am: remove registry.[ch],
+       desktop.[ch], deviceeventcontroller.[ch]
+
+       * registryd/Makefile.am: add registry.[ch],
+       desktop.[ch], rename registryd.c to registry-main.c.
+       add deviceeventcontroller.[ch]
+
+2001-12-11  Bill Haneman <bill.haneman@sun.com>
+
+       * test/simple-at.c:
+       Replace setenv() call with putenv ().
+
+       * libspi/component.c:
+       Bugfix in AccessibleComponent_getExtents (),
+       (from Adi Dascal).
+       
+2001-12-11  Michael Meeks  <michael@ximian.com>
+
+       * libspi/image.c (impl_getImageExtents): impl.
+       (spi_image_class_init): upd.
+
+       * cspi/spi_image.c
+       (AccessibleImage_getImageDescription): fix daft bug
+       of mine (doh).
+
+       * test/test-simple.c (global_listener_cb): update
+       to only quit if not --poke
+       (main): catch --poke.
+       (validate_accessible): upd. dumping, call test_image
+       (test_image): impl.
+
+       * libspi/Makefile.am (IDL_DEPS): fixup the IDL
+       dependencies.
+
+       * idl/Accessibility.idl: update all IDL includes.
+
+       * idl/*.idl - rename to namespace - this sucks, blame
+       mjs' bad decision for oafd.
+
+       * test/test-simple.c (create_test_window): add more tests.
+       (create_tree): split this out.
+       (validate_accessible): bugfix.
+
+2001-12-11  Michael Meeks  <michael@ximian.com>
+
+       * cspi/bonobo/cspi-bonobo-listener.c: 
+       (cspi_kestroke_listener_unref),
+       (cspi_event_listener_unref): impl. undoing previous
+       homenous environment - for Bill.
+
+       * cspi/spi_table.c (long_seq_to_array): use
+       malloc instead.
+
+       * cspi/spi_main.c: split out all bonoboish bits into
+       bonobo/
+
+       * cspi/spi-impl.h: upd. typedefs.
+
+       * cspi/spi_registry.c: update to lowlevel API,
+       return booleans to indicate success in some places.
+
+       * cspi/spi_event.c: update to lowlevel API.
+
+       * cspi/bonobo/Makefile.am: add.
+
+       * cspi/bonobo/cspi-lowlevel.h: add
+
+       * cspi/bonobo/cspi-bonobo.c: add
+
+       * cspi/bonobo/cspi-bonobo-listener.[ch]: impl.
+
+       * cspi/Makefile.am: remove spi-listener-impl.[ch],
+       (SUBDIRS): add bonobo, link in the libs.
+
+       * cspi/spi-util.c: kill this file.
+
+       * TODO: merge in my bits.
+
+2001-12-11  Michael Meeks  <michael@ximian.com>
+
+       * test/test-simple.c (test_value, test_table, main):
+       remove unused variables causing warnings.
+
+       * configure.in: cleanup checks - require gail.
+
+2001-12-11  Bill Haneman  <bill.haneman@sun.com>
+
+       * idl/Value.idl:
+       Changed Value interface to use SValue (scalars) rather than
+       assuming all values are floats.  This allows floats, doubles,
+       longs, shorts, and unsigned values to be manipulated.
+       Introduced Accessibility:SValue union.
+
+       * libspi/value.c:
+       Updated to use new API above, and to work correctly with GValues
+       of different types in AtkValue.
+
+       * cspi/spi_value.c:
+       Updated to use new API above.  cspi's API is as yet unchanged.
+
+       * TODO: 
+       Updated the Value revision action item.
+       
+2001-12-10  Bill Haneman  <bill.haneman@sun.com>
+
+       * test/test-simple.c:
+       Added test_table (GtkTreeView widget in test window to follow).
+       Un-commented test_value, added GtkRange widget.
+       Added GtkTreeView widget with GtkListStore.  It passes regression
+       test but leaks one SPI object for some reason.
+
+       * libspi/value.c:
+       Fixed bug in impl__set_currentValue.
+
+2001-12-10  Michael Meeks  <michael@ximian.com>
+
+       * cspi/spi_text.c: audit for exception handling,
+       tolerating NULL object references safely etc.
+
+       * cspi/spi_value.c: ditto.
+
+       * cspi/spi_table.c (AccessibleTable_getSummary),
+       (AccessibleTable_getAccessibleAt),
+       (AccessibleTable_getRowHeader),
+       (AccessibleTable_getColumnHeader),
+       (AccessibleTable_getCaption): fix bugs hidden by
+       incorrect casts.
+       (long_seq_to_array): impl.
+       (AccessibleTable_getSelectedRows),
+       (AccessibleTable_getSelectedColumns): use it.
+
+2001-12-10  Bill Haneman  <bill.haneman@sun.com>
+
+       * TODO:
+       Added a TODO list (rough and short for now).
+
+       * cspi/spi_hyperlink.c:
+       * cspi/spi_hypertext.c:
+       Fixed macro name typos, and remove use of obsolete macro in 
+       AccessibleHyperlink_getLink.
+
+       * cspi/spi_action.c:
+       * cspi/spi_accessible.c:
+       * cspi/spi_application.c:
+       * cspi/spi_component.c:
+       * cspi/spi_selection.c:
+       * cspi/spi_text.c:
+       * cspi/spi_value.c:
+       Documentation fixes (removed return values from ref/unref methods).
+
+2001-12-10  Michael Meeks  <michael@ximian.com>
+
+       * cspi/spi_action.c: audit for exception handling,
+       tolerating NULL object references safely etc.
+
+       * cspi/spi_accessible.c: ditto.
+
+       * cspi/spi_component.c: ditto.
+
+       * cspi/spi_editabletext.c: ditto.
+
+       * cspi/spi_hyperlink.c: ditto.
+
+       * cspi/spi_hypertext.c: ditto.
+
+       * cspi/spi_image.c: ditto.
+
+       * cspi/spi_selection.c: ditto.
+
+2001-12-10  Michael Meeks  <michael@ximian.com>
+
+       * configure.in: use cspi/libspi.pc.in instead.
+
+       * Makefile.am (pkgconfig_DATA): upd. to match.
+
+       * test/simple-at.c (report_focus_event): kill hacks around
+       bad return values, use putenv not setenv
+
+       * libspi/desktop.c (impl_desktop_get_child_at_index): don't
+       fire ChildGone - I killed it.
+
+       * libspi/component.c
+       (impl_accessibility_component_get_extents): remove
+       bogus return.
+
+       * idl/Accessible.idl: kill ChildGone exception.
+
+       * cspi/*.[ch]: kill int return from ref / unref.
+       
+       * cspi/spi_main.c (cspi_object_add_check): fold into
+       (cspi_object_add): here.
+
+       * cspi/spi_component.c (AccessibleComponent_getExtents):
+       handle exceptions elegantly.
+
+       * cspi/spi-private.h (cspi_check_ev_return),
+       (cspi_return_if_fail): impl.
+
+       * cspi/spi_accessible.c: use extensively.
+       (AccessibleStateSet_equals): add direct compare check.
+
+       * cspi/spi_selection.c: tolerate NULL objs, and check
+       exceptions before return.
+
+       * cspi/spi-util.c (cspi_warn_ev): rename to
+       (cspi_check_ev): this & don't pass ev in; no point.
+
+2001-12-10  Michael Meeks  <michael@ximian.com>
+
+       * test/test-simple.c: use putenv not setenv
+       (get_environment_vars): more chatty if you're not using
+       the fun bits.
+
+       * test/simple-at.c: do the setenv so more people see the
+       nice demo easily.
+
+2001-12-10  Bill Haneman <bill.haneman@sun.com>
+
+       * libspi/registry.c:
+       Changed check of CORBA_environment on notification to be a warning
+       instead of an error for the moment, since we can recover from this
+       error when caused by a queued notification from a dead app.
+       
+       * libspi/value.c:
+       Fixes for spi_value, use G_TYPE_DOUBLE for atk_value values (as
+       used by all current implementors of AtkValue), and coerce to
+       CORBA_float. (Proper general case fix may require change to Value.idl).
+
+2001-12-09  Bill Haneman <bill.haneman@sun.com>
+
+       * cspi/spi.h:
+       * cspi/spi_event.c:
+       * cspi/spi_accessible.c:
+       Documentation fixes: added user_data params to documentation for 
+       listeners and callbacks.  
+
+       * cspi/spi_accessible.c: 
+       Changed AccessibleStateSet_compare to return a
+       StateSet rather than return the difference set into a third parameter.
+       
+       
+2001-12-09  Bill Haneman <bill.haneman@sun.com>
+
+       * configure.in:
+       Replace use of AM_PROG_XML_I18N_TOOLS macro with AC_PROG_INTLTOOL.
+       remove 'dnl' comment line from AC_OUTPUT (autoconf doesn't like
+       it). 
+
+       * Makefile.am:
+       Remove subdirectory po from SUBDIRS for now.
+
+       * at-bridge/bridge.c:
+       Beefed up a couple of debug printouts.
+       One-line fix for signal notification name formatting.
+
+       * libspi/accessible.c:
+       Added assertion to spi_accessible_new ().
+
+       * libspi/application.c:
+       Put #ifdef qualifiers around a printf.
+
+       * libspi/value.c:
+       Fixed derivation (from BONOBO_OBJECT to SPI_BASE).
+
+       * registryd/Makefile.am:
+       * util/Makefile.am:
+       Replaces use of XML_I18N_MERGE_SERVER_RULE with
+       INTLTOOL_SERVER_RULE macro.
+
+       * test/simple-at.c:
+       Added an event listener for several ATK signals, for
+       testing and debugging.  Removed a few g_warnings.
+       Added test output if focussed item implements the Value interface.
+
+       * test/test-simple.c:
+       Added test_value () function (known not to pass at the moment, so
+       not actually called yet.
+       
+2001-12-08  Michael Meeks  <michael@ximian.com>
+
+       * at-bridge/bridge.c (bridge_focus_tracker),
+       (emit_eventv): fix the same ref. leak.
+       (register_atk_event_listeners): don't leak.
+
+       * cspi/spi-listener-impl.c (cspi_event): more 
+       protection from client code.
+
+       * test/test-simple.c (test_desktop): unref the app.
+
+       * test/Makefile.am: upd. TESTS.
+
+       * at-bridge/bridge.c (bridge_exit_func): release the registry.
+
+       * test/keysynth-demo.c (keysynth_exit): unref the listeners.
+
+       * cspi/spi_accessible.c (Accessible_queryInterface): constify.
+
+       * cspi/spi_registry.c: constify in strings.
+       (deregisterGlobalEventListenerAll): don't release the ref.
+
+       * cspi/spi.h: start removing redundant / conflicting
+       gtkdoc comments, making the API readable at a glance :-)
+       
+       * cspi/spi_event.c (AccessibleEventListener_unref): impl.
+
+       * test/keysynth-demo.c (keysynth_exit, main): upd.
+
+       * test/simple-at.c (main, simple_at_exit): upd.
+
+       * test/test-simple.c (unutterable_horror): kill.
+       (utterable_normal_derefs): kill.
+       (main): upd & do a setenv before gtk_init, so that we
+       can use memprof - and to save the pain of remembering
+       this, if we're running under memprof - don't exit.
+
+       * cspi/spi_main.c (SPI_exit): return exit status
+       for cspi.
+       (SPI_event_quit): impl.
+       (SPI_event_main): simplify.
+       (cspi_is_gnome_app): kill.
+       (SPI_init): kill isGNOMEapp arg.
+
+       * at-bridge/bridge.c (register_atk_event_listeners):
+       re-instate the unref.
+       (bridge_exit_func): don't re-activate the registry,
+       protect vs. theoretical re-entry, use the
+       AT_BRIDGE_SHUTDOWN env. var to determine whether to
+       assert a clean shutdown - for regression tests.
+
+2001-12-08  Abel Cheung  <maddog@linux.org.hk>
+
+       * configure.in: Comment out dummy i18n support for now,
+         otherwise it fails to build.
+       * idl/Makefile.am: Add Selection.idl and Hypertext.idl to
+         EXTRA_DIST. They are missing in tarball.
+
+2001-12-07  Michael Meeks  <michael@ximian.com>
+
+       * util/magnifier.c: kill bonobo activation reg. race.
+
+       * libspi/component.c
+       (impl_accessibility_component_get_extents): make it match
+       it's sig.
+
+       * libspi/registry.c (_registry_notify_listeners):
+       re-remove X headers & reconcile conflicts.
+       (spi_listener_struct_free): bad conflict resolve.
+       (impl_accessibility_registry_register_application):
+       more bad merging fixed.
+       (impl_accessibility_registry_deregister_application): ditto.
+       (spi_registry_new): ditto.
+       (spi_registry_init): don't have an applications field.
+
+[ merge fixups2 branch to here ]
+2001-12-07  Michael Meeks  <michael@ximian.com>
+
+       * test/simple-at.c (report_focus_event),
+       (report_focussed_accessible): remove g_warning debug.
+
+2001-12-07  Michael Meeks  <michael@ximian.com>
+
+       * test/test-simple.c (validate_tree): comment out some checks.
+       (test_desktop): app now not registered idly - horay.
+
+2001-12-07  Michael Meeks  <michael@ximian.com>
+
+       * cspi/spi_registry.c
+       (registerAccessibleKeystrokeListener): clean, stop it leaking
+       great swathes of memory, and device event controller references.
+       ensure we always pass valid sequences.
+       (deregisterAccessibleKeystrokeListener): ditto.
+       (generateKeyEvent): upd.
+
+       * at-bridge/bridge.c (bridge_key_listener): handle
+       registry dead exception gracefully.
+       (bridge_focus_tracker, emit_eventv): free ev.
+
+       * test/simple-at.c (report_focus_event): fix polarity.
+
+       * libspi/application.c (notify_listeners): kill the ev
+       argument, and make sure we init the ev we use.
+       (spi_application_object_event_listener): split out a chunk
+       (get_atk_object_ref): here & fixup.
+       (reverse_lookup_name_for_toolkit_event): make const.
+       (spi_application_toolkit_event_listener): fixup, kill leaks
+       ref problems etc.
+
+       * at-bridge/bridge.c (register_atk_event_listeners):
+       don't unref the noop object - causes grief.
+
+       * libspi/registry.c: remove the X headers.
+       turn off the debug churn.
+
+       * libspi/accessible.c (spi_accessible_new_return): only
+       release the ref if we are supposed to [doh]
+
+       * test/simple-at.c (report_button_press, report_focus_event):
+       guard vs. unexpected exit.
+
+       * at-bridge/bridge.c (gtk_module_init): prune printf.
+       (bridge_exit_func): fix app unref.
+
+       * libspi/Makefile.am: don't install registry or desktop.h
+
+       * libspi/*.h: update includes.
+
+       * libspi/application.h: don't include ourself, or
+       other redundant headers.
+
+2001-12-06  Michael Meeks  <michael@ximian.com>
+
+       * libspi/accessible.c
+       (get_accessible_from_servant): impl.
+       Upd. all CORBA impl.s to use it killing cut and paste.
+
+       * cspi/spi_main.c (cspi_cleanup): guard vs. double
+       invokes.
+       (SPI_init): register atexit cleanup handler here.
+
+2001-12-06  Michael Meeks  <michael@ximian.com>
+
+       * at-bridge/bridge.c (gtk_module_init): g_error on
+       activation exception
+
+2001-12-06  Michael Meeks  <michael@ximian.com>
+
+       * at-bridge/bridge.c (gtk_module_init): some sort of
+       confusing merge clash - reverted.
+       (bridge_idle_init): ditto.
+
+       * test/test-simple.c (main, utterable_normal_derefs):
+       merge from Bill - somehow not committed.
+
+2001-12-06  Michael Meeks  <michael@ximian.com>
+
+       * libspi/value.c (spi_value_class_init): upd.
+       (spi_value_finalize): kill.
+
+       * libspi/table.c (spi_table_finalize): kill.
+       (spi_table_interface_new): upd.
+       (spi_table_class_init): upd.
+       (get_table_from_servant): impl.
+       Upd. all CORBA impl.s to use it killing yet more cut and paste.
+
+       * libspi/selection.c (spi_selection_finalize): kill.
+       (spi_selection_interface_new): upd.
+       (spi_selection_class_init): upd.
+       (get_selection_from_servant): impl.
+       Upd. all CORBA impl.s to use it killing yet more cut and paste.
+
+       * libspi/relation.c (spi_relation_finalize): kill.
+       (spi_relation_class_init, spi_relation_new): upd
+
+       * libspi/image.c (spi_image_finalize): kill.
+       (spi_image_class_init): upd.
+       (spi_image_interface_new): upd.
+       (get_image_from_servant): impl.
+       Upd. all CORBA impl.s to use it killing yet more cut and paste.
+
+       * libspi/hyperlink.c (spi_hyperlink_class_init): upd.
+       (spi_hyperlink_finalize): kill.
+       (spi_hyperlink_new): upd.
+       (get_hyperlink_from_servant): impl.
+       Upd. all CORBA impl.s to use it killing yet more cut and paste.
+
+       * libspi/hypertext.c (spi_hypertext_interface_new): upd.
+       (spi_hypertext_finalize): kill.
+       (spi_hypertext_class_init): upd.
+       (get_hypertext_from_servant): impl.
+       Upd. all CORBA impl.s to use it killing yet more cut and paste.
+
+       * libspi/editabletext.c (spi_editable_text_finalize): kill.
+       (spi_editable_text_interface_new): upd.
+       (get_editable_text_from_servant): impl.
+       Upd. all CORBA impl.s to use it killing yet more cut and paste.
+       
+       * libspi/text.c (get_text_from_servant): impl.
+       All impls - update to use it killing more cut and paste,
+       also fix bad string returns on duff args ( a somewhat
+       impossible case to handle - but hey ).
+       (spi_text_construct): impl.
+       (spi_text_interface_new): upd.
+       (spi_text_object_finalize): kill.
+
+       * libspi/component.c
+       (accessibility_component_object_finalize): kill.
+       (spi_component_class_init): upd.
+       (get_component_from_servant): impl. helper to kill cut & paste.
+       (impl_accessibility_component_contains): 
+       (impl_accessibility_component_get_accessible_at_point): 
+       (impl_accessibility_component_get_position): 
+       (impl_accessibility_component_get_extents): 
+       (impl_accessibility_component_get_mdi_z_order): 
+       (impl_accessibility_component_get_layer): 
+       (spi_component_interface_new): upd.
+
+       * libspi/action.c (spi_action_finalize): kill.
+       (spi_action_class_init): upd. inherit from SpiObject.
+       (spi_action_interface_new): upd.
+       (get_action_from_servant): impl. helper to reduce cut & paste.
+       (impl_getKeyBinding, impl_getName, impl_doAction),
+       (impl_getDescription): Use it everywhere.
+
+       * cspi/spi_main.c (get_live_refs): a pointer hash.
+       (spi_object_hash, spi_object_equal): comment out.
+       There are issues with CORBA object hashing that need
+       solving.
+
+       * libspi/application.c (spi_application_init),
+       (spi_application_new): upd.
+
+       * libspi/accessible.c (spi_accessible_object_finalize): kill.
+       (spi_accessible_class_init): upd.
+       s/accessible/object/ in epv methods.
+
+2001-12-05  Bill Haneman <bill.haneman@sun.com>
+
+       * at-bridge/bridge.c:
+       Reorder the bridge initialization into the bridge gtk_module_init,
+       an immediate call to bridge_register_app, and an idle_add for
+       register_atk_event_listeners (the only code that *must* wait until
+       GTK+ is initialized) via bridge_idle_add. Bridge_register_app does
+       the activation, creates the application's Accessible object, and
+       queues the bridge_idle_init function.  Restored call to
+       Accessibility_Registry_deregisterApplication().  
+       Prior to making this call we obtain a new reference to the
+       registry, which is a temporary hack that helps us handle apps that
+       shut down the bonobo mainloop before we get there.
+
+       * libspi/registry.c:
+       Fix string leakage in debug block, and don't segv if a an app
+       dies before its event notifications have been propagated.
+
+       * cpi/spi_util.c:
+       Modify cspi_check_ev() to call g_warning() rather than g_error(),
+       as stopgap measure until we get proper exception handling when 
+       objects die during or before interrogation.  
+
+       * cspi/spi_main.c:
+       * cspi/spi.h:
+       Moved use of isGNOMEApp flag from SPI_event_main to SPI_init.
+       Also changed default value of is_gnome_app to TRUE.
+
+       * test/simple-at.c:
+       * test/keysynth-demo.c:
+       Changed use of SPI_init and SPI_event_main to reflect API change above.
+
+       * test/simple-at.c:
+       Made report_focus_event check the warning value from getName
+       before reporting on focussed accessible; simplifies handling of
+       notifications from dead objects.
+
+       * test/test-simple.c: (Changes not in this patch since source is
+       not in CVS ?)
+       
+2001-12-05  Michael Meeks  <michael@ximian.com>
+
+       * registryd/registryd.c (main): protect against
+       bonobo-activation startup race condition.
+
+       * cspi/spi_main.c (cspi_object_add_check): cope
+       with the exception elegantly.
+
+       * idl/Accessible.idl: decl. ChildGone
+
+       * libspi/desktop.c (spi_desktop_dispose): impl.
+       (spi_desktop_class_init): upd.
+       (spi_desktop_add_application),
+       (spi_desktop_remove_application),
+       (abnormal_application_termination): impl.
+       (impl_desktop_get_child_at_index): re-impl.
+
+       * libspi/registry.c
+       (impl_accessibility_registry_deregister_application),
+       (impl_accessibility_registry_register_application): 
+       kill excessive debug clutter.
+
+       * test/test-simple.c (test_misc): test some NULL
+       tolerance. (main): upd.
+
+       * cspi/spi_main.c (cspi_accessible_is_a): a NULL
+       implements no interfaces - so let's not crash.
+
+       * cspi/spi_accessible.c (Accessible_queryInterface): ditto.
+
+       * libspi/accessible.c (spi_accessible_new_return): impl.
+       helper to calm the cut and paste, to cope with
+       NULL AtkObjects effectively and efficiently, and to kill
+       the referencing bugs.
+
+       * libspi/table.c (impl_getAccessibleAt),
+       (impl_getRowHeader, impl_getColumnHeader): upd.
+
+       * libspi/hyperlink.c (impl_getObject): upd.
+
+       * libspi/accessible.c
+       (impl_accessibility_accessible_get_child_at_index): upd.
+
+       * libspi/component.c
+       (impl_accessibility_component_get_accessible_at_point): upd.
+
+       * test/test-simple.c (test_editable_text, test_text): impl.
+       some simple tests.
+
+       * cspi/spi_editabletext.c
+       (AccessibleEditableText_insertText): constify.
+
+       * test/test-simple.c (focus_me): make more robust.
+
+       * libspi/accessible.c: remove some printfs in methods that
+       we test and work fine, so we can get a clean tree dump.
+
+       * test/test-simple.c (validate_accessible),
+       (validate_tree): make tree dumping pretty too.
+
+       * at-bridge/bridge.c (bridge_signal_listener): upd. so
+       it builds without debug on.
+
+       * test/test-simple.c (validate_accessible): fix the most
+       ludicrous bug.
+
+       * cspi/spi_main.c (spi_object_release): leave the nicely
+       blanked memory around if in debug mode.
+
+       * cspi/spi-listener-impl.c (cspi_event): use add_check.
+
+[committed to fixups2]
+2001-12-05  Michael Meeks  <michael@ximian.com>
+
+       * libspi/editabletext.c
+       (spi_editable_text_class_init): g_type_class_peek_parent,
+       not interface peek - so we finalize cleanly.
+
+       * libspi/accessible.c (spi_accessible_new): kill debug.
+
+       * test/test-simple.c (validate_accessible): fix ref.
+       leak, print strings before freeing them; sigh, comment a
+       chunk out due to strangeness.
+       (validate_tree): unref the child after use.
+
+       * cspi/spi_component.c (AccessibleComponent_getLayer):
+       add missing break statement, switch on zlayer not the
+       uninitialized retval.
+
+       * cspi/spi_main.c (cspi_object_add): add assert, local ref
+       before (possibly re-entering) remote unref.
+
+       * test/simple-at.c (main): unref the desktop.
+
+       * cspi/spi_accessible.c (cspi_accessible_is_a): move 
+       into:
+       
+       * cspi/spi_main.c (cspi_accessible_is_a): here to 
+       isolate bonobo API usage more.
+
+       * libspi/registry.c (impl_accessibility_registry_register_application): 
+       prune bogus comment.
+
+2001-12-04  Michael Meeks  <michael@ximian.com>
+
+       * test/test-simple.c (validate_tree): upd.
+       IndexInParent check to make it more lucid.
+       (validate_accessible): dump the tree.
+
+       * libspi/accessible.c (de_register_public_ref),
+       (get_public_refs): impl.
+       (spi_accessible_new): make more efficient & intuitive.
+       Now IndexInParent check works.
+
+2001-12-04  Michael Meeks  <michael@ximian.com>
+
+       * cspi/spi-util.h: remove.
+
+       * cspi/spi.h: move SPI_freeString here
+
+       * libspi/component.c (impl_accessibility_component_get_layer): 
+       warning fixage.
+       (impl_accessibility_component_get_mdi_z_order): ditto,
+       return -1 on error - is this ok ?
+
+       * test/test-simple.c (test_application): impl.
+
+       * cspi/spi_accessible.c (Accessible_getApplication),
+       (Accessible_isApplication): impl.
+
+       * libspi/registry.c (spi_listener_struct_free): release
+       the CORBA reference too.
+
+       * libspi/accessible.c
+       (impl_accessibility_accessible_get_parent): fix ref leak.
+
+       * libspi/registry.c (spi_registry_new): make the registry
+       immortal - we don't want it to go away ever.
+
+       * libspi/application.c
+       (spi_accessible_application_finalize): impl. cleanup.
+
+       * cspi/spi_registry.c
+       (deregisterGlobalEventListenerAll),
+       (deregisterGlobalEventListener),
+       (deregisterAccessibleKeystrokeListener): fix ref leak.
+
+       * cspi/spi_main.c (SPI_init): remove redundant ref.
+
+       * test/test-simple.c (unutterable_horror): impl. to force a
+       clean shutdown.
+       (main): use it.
+
+       * libspi/registry.c
+       (impl_accessibility_registry_deregister_application): release
+       the application when we de-register it.
+
+       * at-bridge/bridge.c (bridge_exit_func): comment out shutdown
+       until we have the infastructure to get it right.
+
+2001-12-03  Michael Meeks  <michael@ximian.com>
+
+       * libspi/Makefile.am: only build eventlistener.[ch]
+
+       * libspi/accessible.c
+       (impl_accessibility_accessible_get_child_at_index): don't leak.
+
+       * at-bridge/bridge.c (bridge_exit_func): cope with an exit
+       before we hit the idle handler.
+
+       * cspi/spi-util.c (cspi_check_ev): g_error is far nicer for
+       debugging than exit.
+
+       * at-bridge/bridge.c (bridge_focus_tracker): fix ref issue.
+
+       * libspi/listener.c (impl_notify_event): check source
+       not NIL before unref.
+
+       * libspi/registry.c (impl_registry_notify_event): ditto.
+
+       * libspi/eventlistener.c
+       (impl_accessible_event_notify_event): unref the source.
+
+       * libspi/accessibleeventlistener.c
+       (impl_accessible_event_notify_event): unref the source.
+
+       * idl/Event.idl: remove 'hash_id' attribute - of no
+       concievable use.
+
+       * libspi/application.c (notify_listeners): upd list
+       iteration & sig.
+       (spi_application_object_event_listener), 
+       (spi_application_toolkit_event_listener): upd to do correct
+       CORBA ref counting.
+
+       * libspi/registry.c
+       (_registry_notify_listeners): update.
+       (parse_event_type): this method also leaks like a sieve.
+       (impl_accessibility_registry_deregister_global_event_listener): 
+       fix ETYPE_WINDOW case.
+
+       * libspi/application.c
+       (impl_accessibility_application_register_object_event_listener): 
+       kill leak.
+
+       * libspi/hyperlink.c (impl_getObject): fix ref mistake.
+
+       * libspi/hypertext.c (impl_getLink): ditto.
+
+       * cspi/spi_main.c (cspi_object_add): remove
+       bogus CORBA_Object_duplicate.
+
+       * cspi/spi-listener-impl.c (cspi_event): dup/ref
+       on the object_add.
+
+       * cspi/spi_accessible.c
+       (Accessible_getRelationSet): fix leak / referencing issue.
+
+       * cspi/spi_main.c (spi_object_hash, spi_object_equal): impl.
+       (cspi_object_add, cspi_object_unref): upd.
+       (spi_object_release, get_live_refs): impl.
+       (cspi_cleanup): simplify.
+
+       * *.[ch]: s/boolean/SpiBoolean/
+
+       * cspi/spi_accessible.c (role_names): actualy order so it
+       corresponds with the enum !
+
+       * test/test-simple.c (test_roles): check some role strings
+       vs. enums to detect offset errors.
+
+2001-12-01  Michael Meeks  <michael@ximian.com>
+
+       * cspi/spi_main.c (cspi_object_add_check): impl. helper.
+
+       * cspi/spi_accessible.c (Accessible_getChildAtIndex):
+       check ev before 
+       (Accessible_getChildAtIndex): use cspi_add_check so we
+       check the ev before using a (possibly) invalid value.
+
+       * libspi/accessible.c
+       (impl_accessibility_accessible_get_parent): don't segv
+       on a NULL parent.
+
+       * at-bridge/bridge.c (gtk_module_init): upd.
+       (bridge_property_event_listener): don't leak strings
+       and events !
+       (bridge_state_event_listener),
+       (bridge_property_event_listener): don't use a static
+       buffer in case of recursive event emission &
+       re-enterancy - split out the swathe of cut and paste
+       into:
+       (emit_eventv): and fix 2 ref leaks here & comply to the
+       coding style.
+       (bridge_register_app): rename to 
+       (bridge_idle_init): this and kill arg parsing, split
+       various inits & bonobo-activation registration to module
+       init time, kill referencing error.
+       (bridge_exit_func): fix the same leak.
+       (bridge_focus_tracker): don't leak event structures
+       and strings.
+       (bridge_signal_listener): more leakage and cut & paste
+       fixage.
+       (bridge_key_listener): return the result - FIXME is
+       this polarity correct ?
+       (accessibility_keystroke_from_atk_key_event): rename
+       (accessibility_init_keystroke_from_atk_key_event): and stop
+       leakage.
+       (gtk_module_init): return a value - not that it is checked by
+       Gtk - but hey.
+       (bridge_key_listener): register my horror at casting between
+       IDL defined structs.
+       (bridge_get_registry): kill - not used.
+
+       * cspi/spi_accessible.c (Accessible_getRole): make return const.
+
+       * test/test-simple.c (test_roles): impl.
+       (test_desktop, validate_accessible, validate_tree): impl.
+
+       * cspi/spi_accessible.c (role_names): fixup bogus
+       MAX_ROLES setup, make constants const for efficient linkage
+       (AccessibleRole_getName): conform to coding style, make
+       return 'const'
+
+2001-11-30  Michael Meeks  <michael@ximian.com>
+
+       * cspi/spi.h: add missing prototype.
+
+       * libspi/registry.c (spi_listener_struct_new): fix sig.
+
+       * test/Makefile.am: add test-simple
+
+       * test/test-simple.c: add
+
+       * test/test.sh: add.
+
+       * cspi/spi_main.c (SPI_init): make SPI_inited module global,
+
+       * at-bridge/bridge.c (gtk_module_init): don't do an idle init,
+       do it straight - since otherwise we often get an activation race.
+
+[ work before Bill duplicated a chunk of it ... ]
+2001-11-30  Michael Meeks  <michael@ximian.com>
+
+       * libspi/keystrokelistener.c
+       (spi_keystroke_listener_class_init): fixup arg
+       count (doh).
+
+       * libspi/eventlistener.c
+       (spi_event_listener_class_init): ditto.
+
+       * tests/test.sh: add.
+
+       * cspi/spi-listener-impl.h: update macros.
+
+       * cspi/spi-listener-impl.c
+       (cspi_event_listener_remove_callback): add
+       correct pre-conditions.
+
+       * cspi/spi_main.c (SPI_exit): guard vs. double
+       exits, exit the mainloop nicely.
+       (SPI_event_main): make more sense.
+       (SPI_init): move the atexit evilness here so we
+       always do it (yuck).
+       (SPI_event_main): upd.
+
+       * test/simple-at.c: update for listener changes.
+
+       * registryd/registryd.c (main): prune kruft.
+
+       * libspi/libspi.h: upd.
+
+       * libspi/eventlistener.[ch]: rename broken macros.
+
+       * libspi/accessibleeventlistener.[ch]: remove.
+
+       * libspi/*.[ch]: IS_SPI_... -> SPI_IS_...
+
+       * test/test-simple.c: Add - automated tests.
+
+       * cspi/spi-listener-impl.c (cspi_event),
+       (cspi_key_event): add user_data to invoke.
+       (cspi_keystroke_listener_finalize): impl.
+       (cspi_keystroke_listener_class_init): upd.
+
+       * cspi/spi_event.c
+       (createAccessibleEventListener),
+       (AccessibleEventListener_addCallback),
+       (createAccessibleKeystrokeListener),
+       (AccessibleKeystrokeListener_addCallback): upd.
+
+       * libspi/deviceeventcontroller.c
+       (spi_device_event_controller_check_key_event): add public proto.
+
+       * libspi/registry.c
+       (impl_accessibility_registry_deregister_global_event_listener): 
+       always init listeners.
+       (_registry_notify_listeners): yes it is.
+
+       * cspi/spi-listener-impl.c (cspi_key_event): 
+       move debug to here.
+       (cspi_event_listener_finalize): impl.
+       (cspi_event_listener_class_init): hook up.
+       (event_handler_new, event_handler_free),
+       (event_list_remove_by_callback): impl.
+       (cspi_event_listener_remove_callback),
+       (cspi_keystroke_listener_remove_callback),
+       (cspi_keystroke_listener_add_callback),
+       (cspi_event_listener_add_callback): upd.
+
+       * libspi/keystrokelistener.c
+       (keystroke_listener_object_finalize): kill
+       (spi_keystroke_listener_class_init): upd.
+       (spi_keystroke_listener_add_callback),
+       (spi_keystroke_listener_remove_callback): kill,
+       use signals.
+       (impl_key_event): prune drasticaly.
+
+       * libspi/eventlistener.c
+       (spi_event_listener_add_callback),
+       (spi_event_listener_remove_callback): kill, use
+       signals.
+       (impl_accessible_event_notify_event): upd.
+       (spi_event_listener_object_finalize): remove.
+
+       * libspi/Makefile.am: use eventlistener.[ch]
+
+2001-12-04  Bill Haneman  <bill.haneman@sun.com>
+
+       * libspi/registry.c (_registry_notify_listeners):
+       Changed listener loop iteration to use preferred convention.
+       Got rid of string memory leaks caused be calling g_strconcat
+       inside function calls.
+
+       * libspi/registry.c (parse_event_type):
+       Stopped g_strconcat memory leaks, free the g_strsplit return,
+       g_strdup the split pieces when used, etc.
+
+2001-12-04  Bill Haneman  <bill.haneman@sun.com>
+
+       * idl/State.idl: 
+       Change method 'compare' to return a 'difference set' rather than
+       taking a StateSet as an out parameter (more Java-friendly).
+
+       * idl/Accessible.idl:
+       Added CORBA struct 'BoundingBox', to faciliate API changes below:
+       
+       * idl/Component.idl:
+       * idl/Image.idl:
+       Changed methods 'getExtents' and 'getImageExtents' in these
+       interfaces to return a BoundingBox structure.  
+       (getPosition and getSize are redundant and possibly should be
+       removed, rather than creating a corresponding Point struct.)
+
+       * cspi/spi_component.c:
+       Modify implementation of getExtents to reflect the above IDL
+       change.
+       
+       * cspi/spi_image.c:
+       * cspi/spi.h:
+       Add (missing) AccessibleImage_getExtents () API.
+
+       * docs/reference/cspi/at-spi-cspi-sections.txt:
+       Added AccessibleImage_getImageExtents () to docs.
+       
 2001-12-03  Bill Haneman  <bill.haneman@sun.com>
 
-        * idl/Component.idl:
+       * idl/Component.idl:
        Added two methods, getLayer () and getMDIZOrder (), to reflect
        the new ATK methods atk_object_get_layer and
        atk_object_get_mdi_z_order. (Which arguably should be part of the
        AtkComponent API and AtkObject).  Also added an enum,
        ComponentLayer, for the first method's return value.
 
+       * libspi/component.c:
+       Added implementations for these methods.
+
        * cspi/spi_component.c:
        * cspi/spi.h:
        Added cspi binding methods for above,