Optimisation:
	+ async unref's ...
	+ cache Role & queryInterface results ... [!]

2.0.0:

	+ fix bug #82509 which prevents return of boolean FALSE from 
	  SPI_registerKeystrokeListener for ALL_WINDOWS events
	  when XGrabKey fails.

	+ fix bug #84100 which means that keygrabs are not released
          by the registry when a client dies.  Test to make sure
          grabs are released when a client requests deregistration
	  of a key listener.

2.0.1:
	+ fix bug affecting multihead at-spi behavior.


1.1 API Proposed Additions:

        + Need API for getting stacking order of toplevel windows.
	  (bug #84097)

1.2 API Proposed Additions:

	+ SPI_dupString ()
	+ Additional relation types: FLOWS_TO, FLOWS_FROM
	+ SPIBoolean
	  AccessibleText_getTextBounds (AccessibleText *text, 
					long start_offset, 
					long end_offset,
					long *x,
					long *y,
					long *width,
					long *height, 
					SPI_COORD_TYPE type);
	+ char *
          AccessibleText_getTextWithin (AccessibleText *text,
					long x,
					long y,
					long width,
					long height,
					SPI_COORD_TYPE type);

/* *********************************************************** */
					
TODO:

idl: 

//	+ audit IDL for conformance with bonobo/doc/FAQ's [Java]
//	  naming practice [Michael]

cspi: 
	+ ensure spi-listener-impl's list notification methods don't
	  have a re-enterancy hazard. [Michael]

registry:
	+ move code into here from libspi [Michael]
	+ fire an event on dead application & re-factor the listen for
	  broken code.

bridge:
	+ move code into here from libspi

libspi: 
	+ remove redundant casts throughout
	+ determine if there are other headers we don't need to install
	+ consider moving the non-impl. parts into registryd/ bridge/ etc.
	+ complete conversion of static methods to "spi_" namespace. [Bill]

test:
	+ update test-simple to do complete API tests
	+ Expand tests for AtkTable

=================

for 2.4/'dev complete'

[** denotes API extension!]

** ATK API for text range bounds?

** add ROLE_EDITBAR [describes objects, usually text entries, 
                    that describe and/or control the operation of other
	            components.  They both reflect stateful information 
	            about the application or the currently-focussed 
		    object within the app, and contain editable text.
	    	    Examples include the URI/location entry field in
		    browsers, the currently-active-file field in an editor,
                    and the formula/edit field in a spreadsheet.]

* multiple-workspace awareness

* in deviceeventcontroller, better keysym/unicode mapping 
	(i.e. more complete)

* type checking in the 'event detail' methods
        (see TODO comments in cspi/spi_event.c)

* fix silly assumption(s) about apps DISPLAY being 
        same as registry, and being the GDK_DISPLAY()
	default.

* remove listeners from the list if their processes die.

* do better deregistration on registry finalize.

* check what happens if XKB isn't available - make registry and bridges
	at least not trash things (even if nonfunctional).

* deviceeventcontroller.c: Distinguish between physical and logical
	(i.e. button 1 versus "left mouse") mouse buttons.

========

2.6: 

* use XIM for keysym/unicode mapping, string insertion.
* toplevel windows: implement Z ordering via Component mdi_zorder API.
