From: billh Date: Thu, 10 Jan 2002 09:59:00 +0000 (+0000) Subject: Fixed bug in spi_accessible_new, codepath for bonobo-accessible objects. X-Git-Tag: AT_SPI2_ATK_2_12_0~1447 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git;a=commitdiff_plain;h=80a357d26579617a76c32e0de9ac7fc99476cd18 Fixed bug in spi_accessible_new, codepath for bonobo-accessible objects. Fix required exposure of spi_accessible_construct method to libgail-gnome, no API impact on normal at-spi clients. git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@205 e2bd861d-eb25-0410-b326-f6ed22b6b98c --- diff --git a/ChangeLog b/ChangeLog index 8d755f6..53a183d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,10 @@ -2002-01-09 Bill Haneman +2002-10-01 Bill Haneman + + * libspi/accessible.c, libspi/accessible.h: + Expose spi_accessible_construct, to enable libgail-gnome + construction from spi_accessible subtype. + +2002-09-01 Bill Haneman * libspi/accessible.c: (spi_accessible_new) : Move the test for SPI_IS_REMOTE_OBJECT to diff --git a/libspi/accessible.c b/libspi/accessible.c index 39bde6a..dd791c1 100644 --- a/libspi/accessible.c +++ b/libspi/accessible.c @@ -439,12 +439,19 @@ de_register_public_ref (SpiBase *object) SpiAccessible * spi_accessible_new (AtkObject *o) { + return spi_accessible_construct (SPI_ACCESSIBLE_TYPE, o); +} + +SpiAccessible * +spi_accessible_construct (GType type, AtkObject *o) +{ SpiAccessible *retval; CORBA_Environment ev; CORBA_exception_init (&ev); g_assert (o); + g_assert (g_type_is_a (type, SPI_ACCESSIBLE_TYPE)); if ((retval = g_hash_table_lookup (get_public_refs (), o))) { @@ -452,73 +459,73 @@ spi_accessible_new (AtkObject *o) return retval; } - else - { - retval = g_object_new (SPI_ACCESSIBLE_TYPE, NULL); - - spi_base_construct (SPI_BASE (retval), G_OBJECT(o)); - - /* aggregate appropriate SPI interfaces based on ATK interfaces */ - - if (ATK_IS_ACTION (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_action_interface_new (o))); - } - - if (ATK_IS_COMPONENT (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_component_interface_new (o))); - } - - if (ATK_IS_EDITABLE_TEXT (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT(spi_editable_text_interface_new (o))); - } - - else if (ATK_IS_TEXT (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_text_interface_new (o))); - } - - if (ATK_IS_HYPERTEXT (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_hypertext_interface_new (o))); - } - - if (ATK_IS_IMAGE (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_image_interface_new (o))); - } - - if (ATK_IS_SELECTION (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_selection_interface_new (o))); - } - - if (ATK_IS_TABLE (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_table_interface_new (o))); - } - - if (ATK_IS_VALUE (o)) - { - bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_value_interface_new (o))); - } - } - + else + { + retval = g_object_new (type, NULL); + spi_base_construct (SPI_BASE (retval), G_OBJECT(o)); + } + g_hash_table_insert (get_public_refs (), o, retval); g_signal_connect (G_OBJECT (retval), "destroy", G_CALLBACK (de_register_public_ref), NULL); + + /* aggregate appropriate SPI interfaces based on ATK interfaces */ + + if (ATK_IS_ACTION (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (spi_action_interface_new (o))); + } + + if (ATK_IS_COMPONENT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (spi_component_interface_new (o))); + } + + if (ATK_IS_EDITABLE_TEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT(spi_editable_text_interface_new (o))); + } + + else if (ATK_IS_TEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (spi_text_interface_new (o))); + } + + if (ATK_IS_HYPERTEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (spi_hypertext_interface_new (o))); + } + + if (ATK_IS_IMAGE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (spi_image_interface_new (o))); + } + + if (ATK_IS_SELECTION (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (spi_selection_interface_new (o))); + } + + if (ATK_IS_TABLE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (spi_table_interface_new (o))); + } + + if (ATK_IS_VALUE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (spi_value_interface_new (o))); + } + return retval; } diff --git a/libspi/accessible.h b/libspi/accessible.h index e263f6d..93c6aa0 100644 --- a/libspi/accessible.h +++ b/libspi/accessible.h @@ -27,7 +27,7 @@ G_BEGIN_DECLS #define SPI_ACCESSIBLE_TYPE (spi_accessible_get_type ()) #define SPI_ACCESSIBLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SPI_ACCESSIBLE_TYPE, SpiAccessible)) #define SPI_ACCESSIBLE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SPI_ACCESSIBLE_TYPE, SpiAccessibleClass)) -#define SPI_IS_ACCESSIBLE(o) (G_TYPE_CHECK__INSTANCE_TYPE ((o), SPI_ACCESSIBLE_TYPE)) +#define SPI_IS_ACCESSIBLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SPI_ACCESSIBLE_TYPE)) #define SPI_IS_ACCESSIBLE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SPI_ACCESSIBLE_TYPE)) typedef struct { @@ -41,6 +41,8 @@ typedef struct { GType spi_accessible_get_type (void); SpiAccessible *spi_accessible_new (AtkObject *o); +SpiAccessible *spi_accessible_construct (GType type, + AtkObject *o); Accessibility_Accessible spi_accessible_new_return (AtkObject *o, gboolean release_ref, CORBA_Environment *ev);