Re: [g-a-devel]URGENT: RFC IDL bug in at-spi



Hi Bill,

	Of course - you must fix this ! permission granted with pleasure.

	I was wondering why at-poke just didn't work with state-sets.

	Regards,

		Michael.

On Thu, 2002-04-11 at 17:51, Bill Haneman wrote:
> Hi Folks:
> 
> Marc has found the root cause of a serious at-spi bug, it turns out
> to be an API bug.  Accessibility_StateSet turns out not to 
> inherit from Bonobo_Unknown as it should.
> 
> Marc has prepared and tested a patch to fix this,
> may we commit for RC1 ?  Without this patch the StateSet
> stuff is quite useless; therefore we are confident that
> this change will not impact any API users negatively;
> in fact it fixes the currently broken code which 
> uses this API.
> 
> Sorry for the 11th hour request, but better now than
> never...
> 
> -Bill
> ----
> 

> Index: at-spi/idl/Accessibility_State.idl
> ===================================================================
> RCS file: /cvs/gnome/at-spi/idl/Accessibility_State.idl,v
> retrieving revision 1.7
> diff -u -r1.7 Accessibility_State.idl
> --- at-spi/idl/Accessibility_State.idl	26 Feb 2002 18:30:54 -0000	1.7
> +++ at-spi/idl/Accessibility_State.idl	11 Apr 2002 11:25:25 -0000
> @@ -113,7 +113,7 @@
>  
>    typedef sequence <StateType> StateSeq;
>  
> -  interface StateSet {
> +  interface StateSet : Bonobo::Unknown {
>      boolean 		contains (in StateType state);
>      void		add (in StateType state);
>      void 		remove (in StateType state);
> Index: at-spi/libspi/accessible.c
> ===================================================================
> RCS file: /cvs/gnome/at-spi/libspi/accessible.c,v
> retrieving revision 1.42
> diff -u -r1.42 accessible.c
> --- at-spi/libspi/accessible.c	15 Mar 2002 15:26:28 -0000	1.42
> +++ at-spi/libspi/accessible.c	11 Apr 2002 11:25:25 -0000
> @@ -306,13 +306,20 @@
>  					 CORBA_Environment     *ev)
>  {
>    AtkObject *object = get_atkobject_from_servant (servant);
> +  AtkStateSet *atk_set;
> +  SpiStateSet *set;
> +  Accessibility_StateSet retval;
>  
>    bonobo_return_val_if_fail (object != NULL, NULL, ev);
>  
> -  printf ("SpiAccessible get_state.\n");
> +  atk_set = atk_object_ref_state_set (object);
> +  
> +  set = spi_state_set_new (atk_set);
> +  retval = bonobo_object_dup_ref (
> +				  BONOBO_OBJREF(set),
> +				  ev);
>  
> -  /* TODO: implement the bonobo stateset class */
> -  return (Accessibility_StateSet) NULL;
> +  return retval;
>  }
>  
>  /*
> Index: at-spi/libspi/libspi.h
> ===================================================================
> RCS file: /cvs/gnome/at-spi/libspi/libspi.h,v
> retrieving revision 1.4
> diff -u -r1.4 libspi.h
> --- at-spi/libspi/libspi.h	3 Jan 2002 20:23:00 -0000	1.4
> +++ at-spi/libspi/libspi.h	11 Apr 2002 11:25:25 -0000
> @@ -32,6 +32,7 @@
>  #include <libspi/image.h>
>  #include <libspi/relation.h>
>  #include <libspi/selection.h>
> +#include <libspi/stateset.h>
>  #include <libspi/table.h>
>  #include <libspi/text.h>
>  #include <libspi/value.h>
> Index: at-spi/libspi/stateset.c
> ===================================================================
> RCS file: /cvs/gnome/at-spi/libspi/stateset.c,v
> retrieving revision 1.2
> diff -u -r1.2 stateset.c
> --- at-spi/libspi/stateset.c	14 Mar 2002 20:39:41 -0000	1.2
> +++ at-spi/libspi/stateset.c	11 Apr 2002 11:25:25 -0000
> @@ -36,6 +36,12 @@
>  {
>    gint i;
>  
> +  if (accessible_state_types || atk_state_types)
> +    return FALSE;
> +  if (!accessible_state_types)
> +    accessible_state_types = g_new (Accessibility_StateType, Accessibility_STATE_LAST_DEFINED);
> +  if (!atk_state_types)
> +    atk_state_types = g_new (AtkStateType, ATK_STATE_LAST_DEFINED);
>    g_return_val_if_fail (accessible_state_types, FALSE);
>    g_return_val_if_fail (atk_state_types, FALSE);
>    
> @@ -347,6 +353,7 @@
>  {
>    POA_Accessibility_StateSet__epv *epv = &klass->epv;
>  
> +  spi_init_state_type_tables ();
>    epv->contains = impl_contains;
>    epv->add = impl_add;
>    epv->remove = impl_remove;
-- 
 mmeeks gnu org  <><, Pseudo Engineer, itinerant idiot




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]