+2002-09-16 Padraig O'Briain <padraig.obriain@sun.com>
+
+ * registryd/deviceeventcontroller.c (spi_dec_mouse_moved): Removed
+ bogus call to CORBA_string_dup(). Also removed unnecessary
+ g_string_dup/g_free calls.
+
+2002-09-13 Bill Haneman <bill.haneman@sun.com>
+
+ * registryd/deviceeventcontroller.c:
+ spi_dec_mouse_moved: Fixed memory leaks and reordered 2 code blocks.
+
+ * test/event-listener-test.c:
+ main: commented out three redundant listeners, to reduce output
+ noise. (They still are potentially useful for testing).
+
+
+2002-09-13 Michael Meeks <michael@ximian.com>
+
+ * Update all the copyrights to include Ximian.
+
+2002-09-06 Mark McLoughlin <mark@skynet.ie>
+
+ * cspi/spi.h: add SPI_LAYER_WINDOW.
+
+ * cspi/spi_component.c: (AccessibleComponent_getLayer):
+ add Accessibility_LAYER_WINDOW case.
+
+ * idl/Accessibility_Component.idl: add LAYER_WINDOW.
+
+ * libspi/component.c: (impl_accessibility_component_get_layer):
+ add ATK_LAYER_WINDOW case.
+
+2002-08-28 Bill Haneman <bill.haneman@sun.com>
+
+ * configure.in: incremented micro version.
+
+ * branched for gnome-2-0 (a gnome-2-0-0 branch already exists).
+
+2002-08-20 Bill Haneman <bill.haneman@sun.com>
+
+ * HACKING:
+ Clarified and reworded our commit policy.
+
+ * NEWS:
+ Started an API "todo" addition list for 2.2.
+
+ * libspi/text.c:
+ (impl_getSelection):
+ Free char pointer from atk_text_get_selection, which was being leaked.
+
+2002-08-19 Bill Haneman <bill.haneman@sun.com>
+
+ * AUTHORS:
+ Small revision to author acknowledgement.
+
+2002-08-19 Padraig O'Briain <padraig.obriain@sun.com>
+
+ * atk-bridge/bridge.c (spi_atk_bridge_signal_listener):
+ If signal has detail add it to the type of the event.
+ (bug #90838)
+
+2002-08-12 Michael Meeks <michael@ximian.com>
+
+ * test/test-simple.c (global_listener_cb): bin bogosity.
+ (test_keylisteners): disable, still doesn't work reliably,
+ certainly not on my system anyway.
+
+ * atk-bridge/bridge.c (spi_atk_bridge_key_listener):
+ don't leak a reference on the DEC. This round-trip
+ fetching of the DEC per keystroke sucks, it should be
+ cached.
+
+ * cspi/spi-private.h,
+ * cspi/cspi-lowlevel.h,
+ * cspi/bonobo/cspi-bonobo-listener.[ch],
+ * cspi/bonobo/cspi-bonobo.c: get the copyright
+ notices better - there is still a large amount of
+ work in at-spi falsely attributed solely to Sun.
+
+ * cspi/spi_main.c (cspi_object_ref): kill bogus
+ hash lookup, just increment the ref.
+ (SPI_freeString): make explicit the fact that we
+ handle NULL strings just fine.
+ (report_leaked_ref): obey coding standards.
+ (cspi_object_hash, cspi_object_equal): kill retval.
+ (cspi_object_release): only release if not on loan.
+ (cspi_object_get_ref): add 'loan' concept, bin 'do_ref'.
+ (cspi_object_borrow, cspi_object_return): impl.
+
+ * cspi/bonobo/cspi-bonobo-listener.c (cspi_event):
+ use cspi_object_borrow / return.
+
+2002-08-12 Darren Kenny <darren.kenny@sun.com>
+
+ * cspi/bonobo/cspi-bonobo-listener.c:
+ (cspi_event):
+ Don't call cspi_oject_new() because this is creating a new Accessible
+ every single time that an event is fired. This causes ATs like at-poke
+ to nolonger recognise the source of the event and thus ignore it.
+ Re-use the object from the cache, ref it and then unref it after the
+ listeners have been called.
+
+2002-08-06 Darren Kenny <darren.kenny@sun.com>
+
+ * test/event-listener-test.c:
+ Added command-line options to disable mouse events (m) and
+ show usage (h).
+
+2002-07-31 Padraig O'Briain <padraig.obriain@sun.com>
+
+ * configure.in: Update required versions of ATK, GTK+ and GAIL
+
+ * cspi-1.0.pc.in: Add dependency for X include files
+
+ * cspi/Makefile.am:
+ * cspi/bonobo/Makefile.am:
+ Add $(X_CFLAGS) so that X include files
+ are picked up even if not in standard place (bug #71686)
+
+2002-06-25 Bill Haneman <bill.haneman@sun.com>
+
+ * registryd/deviceeventcontroller.c: fix for 84261
+ (spi_dec_mouse_moved):
+ Added test of mouse button mask, so that we can detect mouse
+ button release. Unfortunately we can't otherwise detect mouse
+ button release events without consuming the mouse press event,
+ because of the way XGrabButton works. This means that our mouse
+ release events have a latency dependent on the polling period
+ while the mouse button is down. At least in this case we only
+ have to poll while the button is down, and not at other times.
+ If the button masks don't match with what the last press event
+ reported, we report the appropriate button release event.
+ (spi_dec_ungrab_mouse):
+ New method (not yet called).
+ (spi_device_event_controller_forward_mouse_event):
+ New method, sends mouse press event from GdkFilter.
+ (spi_dec_init_mouse_listener):
+ Added code to call XGrabButton, redirecting mouse button events to
+ the root window and our Gdk event loop.
+ (global_filter_fn):
+ Added code to filter mouse button events, and reordered.
+
+ * test/event-listener-test.c:
+ (main):
+ Added registration for mouse events of type "mouse:button".
+
+2002-06-25 Bill Haneman <bill.haneman@sun.com>
+
+ * registryd/deviceeventcontroller.c: partial fix for 84261
+ (spi_dec_poll_mouse_idle):
+ New method, a timeout which checks to see if the mouse
+ has moved.
+ (spi_dec_poll_mouse_moving):
+ A timeout to be called when mouse motion is underway.
+ (spi_dec_poll_mouse_moved):
+ A method which fires an event if the mouse has moved, and reports
+ whether or not it did so.
+ (spi_dec_init_mouse_listener):
+ A method which sets up the timeouts above.
+ (spi_device_event_controller_new):
+ Now calls spi_dec_init_mouse_listener.
+
+ * registryd/registry.c:
+ (spi_registry_init):
+ Now we initialize the device event controller when the registry is
+ initialized, instead of waiting until a client has requested a key
+ event notification; this is because we need the event controller
+ for mouse events, but the mouse event registration API is a
+ "registry" call and doesn't explicitly call the
+ deviceeventcontroller.
+ We now report mouse motion events with a 100 ms idle latency and
+ a 20 ms granularity when motion is in progress.
+
+ * test/event-listener-test.c:
+ (main):
+ We now register the "detail listener" for events of type
+ "mouse:rel" and "mouse:abs" (Note, mouse-abs events generally are
+ delivered only for the first mouse event received, and thereafter
+ "mouse:abs" events are delivered.)
+
+ * cspi/spi_registry.c:
+ DOCS: Documented the above mouse event typestrings.
+
+2002-06-21 Bill Haneman <bill.haneman@sun.com>
+
+ Happy Summer Solstice...
+
+ * registryd/deviceeventcontroller.c: [fix for bug 84100]
+ (spi_controller_notify_keylisteners):
+ Changes to remove a listener from the listener list, freeing its
+ open keygrabs, if a notification to that listener fails. This
+ means that although a dead listener can continue to hold a passive
+ keygrab, a maximum of one dispatch to such a listener can fail
+ before the listener is removed from the list, thus the keygrab
+ will be released on the next occurrence.
+ As part of this fix:
+ (spi_notify_keylisteners):
+ Renamed to spi_controller_notify_keylisteners, as the controller
+ instance must now be passed as an argument.
+ The copied 'notify' GList is now a list of DEControllerKeyListener
+ objects, since we need more than just the CORBA reference if a
+ notify fails and we need to deregister the listener.
+ (impl_notify_listeners_sync):
+ (impl_notify_listeners_async):
+ (spi_device_event_controller_forward_key_event):
+ Modify use of notify_keylisteners in accordance with above
+ changes.
+ (spi_deregister_controller_key_listener):
+ New method introduced by refactoring, from
+ impl_deregister_keystroke_listener.
+ (impl_deregister_keystroke_listener):
+ Call spi_deregister_controller_key_listener.
+ (spi_key_listener_clone):
+ New method to copy a key listner without doing a 'ref' on the
+ remote object instance; used to create a notifier list.
+ (spi_key_listener_data_free):
+ New method, frees data without unreffing the source.
+ Used in refactor.
+ (spi_key_listener_clone_free): new method.
+ (spi_key_listener_free):
+ refactored to call spi_key_listener_data_free.
+
+2002-06-20 Bill Haneman <bill.haneman@sun.com>
+
+ * registryd/registry.c: [fix for bug 86048]
+ (notify_listeners_cb):
+ Clear CORBA system exceptions which occur when notifying
+ listeners, before returning to the source of the original event,
+ since the event source doesn't care if the relayed notify failed.
+ In other words, don't complain to the atk-bridge if the registry
+ could not notify all its listeners, that's no fault of the
+ application and thus should not appear to be an error from the
+ application's perspective.
+
+ * cspi/spi_main.c: [fix for bug 85980]
+ (cspi_object_ref):
+ Replaced use of bonobo_object_dup_ref with call to the wrapper
+ method, csou_dup_ref (); this silences a compiler warning and
+ provided more portability.
+ (cspi_registry):
+ Ping the registry before return, and restart if necessary.
+
+ * cspi/bonobo/cspi-bonobo.c:
+ (cspi_ping):
+ New internal method.
+ (cspi_dup_ref):
+ Fixed this method to return an object reference, as it should have
+ all along.
+
+ * cspi/cspi-lowlevel.h:
+ Added internal definition for cspi_ping() and fixed
+ return type of cspi_dup_ref().
+
+
+2002-06-19 Bill Haneman <bill.haneman@sun.com>
+
+ * atk-bridge/bridge.c: [fix for bug 85305]
+ (spi_atk_bridge_register_application):
+ New method where the initial application registry calls have been
+ moved; it allows an application to re-register in response to
+ certain error conditions (such as a registry restart, see below).
+ (atk_bridge_init):
+ Moved some initialization code to the method
+ spi_atk_bridge_get_registry, below.
+ (spi_atk_bridge_get_registry):
+ New, private accessor function for the Accessibility_Registry
+ instance. If the registry has not been started before, or has
+ died (as detected by failure of a CORBA exception), it is
+ restarted before return, and spi_atk_bridge_register_application
+ is called again to register with the new bridge instance.
+ (spi_atk_emit_eventv):
+ Set registry_died on error; use spi_atk_bridge_get_registry () to
+ access the registry.
+
+ * registryd/registry.c:
+ (impl_accessibility_registry_register_global_event_listener):
+ Set listener's event_type_quark to etype.minor instead of
+ etype.major (fix for bug 84856).
+
+ * test/event-listener-test.c:
+ (report_detail_event):
+ Change the output string so that user/tester can tell that the
+ 'detail listener' was called instead of the 'generic listener'.
+
+2002-06-18 Bill Haneman <bill.haneman@sun.com>
+
+ Fixes for bugs 84900, 84908, 84897, 84898.
+
+ * NEWS: updated.
+
+ * configure.in:
+ Revved version to 1.1.0
+ (reserving the 1.0.X branch for gnome-2-0-0 branch, this
+ version is going to HEAD which will be used for gnome-2-0-1 and later.)
+
+ * idl/Accessibility_Registry.idl:
+ (EventListener::notifyEvent):
+ Removed 'oneway' directive after extensive consulation with
+ ORBit2 team and others. This means also that unref() of the event
+ source can and should be done synchronously after emission, rather
+ than remotely in the client, after servicing the notify call on
+ the listener side.
+
+ NOTE: This change speeds up listener performance considerably, but
+ introduces new latency on the application side. We may want to
+ add an event queue to the atk-bridge.
+
+ * atk-bridge/bridge.c:
+ (spi_atk_bridge_focus_tracker):
+ Do a local unref() on the event source after emission.
+
+ * registryd/registry.c:
+ (desktop_remove_application):
+ Do an unref() on the event source after emission.
+ (desktop_add_application):
+ Do an unref() on the event source after emission.
+ (notify_listeners_cb):
+ When relaying an event, don't automatically add the event source
+ to the local object cache, just CORBA_dup it instead. Likewise,
+ if this method reenters, release the ref rather than calling
+ unref() as well.
+ (impl_registry_notify_event):
+ No longer call remote unref() on the event source after dispatch.
+
+ * libspi/eventlistener.c:
+ (impl_accessible_event_notify_event):
+ Removed remote unref ()
+
+ * cspi/bonobo/cspi-bonobo-listener.c:
+ (cspi_event):
+ We now call cspi_object_new() instead of cspi_object_add() on
+ receipt of an event; thus we only have an implicit object ref
+ while the cspi_event method is being executed. If we need to keep
+ a reference to the object, the listener must call ref() on the
+ object. Thus also we don't need to call cspi_object_unref() after
+ invoking the listener callbacks in this method.
+
+ * cspi/spi_main.c:
+ (cspi_object_new):
+ New internal API for creating a new cspi object, without adding it
+ to the object cache.
+ (cspi_object_add):
+ Now uses cspi_object_new() to create the cspi object instance.
+ (cspi_object_ref):
+ Now checks to see if the object is in the internal object cache,
+ and adds it if necessary before incrementing its refcount (note
+ that new objects are added with a refcount of 1).
+ (report_leaked_ref):
+ New method which gives some information on leaked object instances
+ if leak detection is turned on.
+
+ * test/event-listener-test.c:
+ (timing_test_event):
+ New method, used for testing event delivery timing for special
+ events of type "object:test". It reports elapsed time and
+ events/sec every 500 events.
+ (main):
+ Added a new listener, 'test listener', to check timing of event
+ receipt as noted above.
+ (report_event):
+ Added some timing output here also, reports elapsed time every 100
+ events.
+
+ * test/stress-test.c:
+ Emit events of type "object:test", for use with "event-listener-test".
+
+ * test/test-simple.c:
+ (global_listener_cb):
+ Call Accessible_ref() on the event source before calling
+ validate_accessible, since the validation process does pointer
+ comparisons on the event source, meaning that the event source
+ needs to be added to the local object cache first. Any use of
+ such pointer comparisons between Accessible objects requires that
+ the caller hold an explicit reference to those objects.
+ We also must therefore call Accessible_unref() when leaving this method.
+