X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git;a=blobdiff_plain;f=libspi%2Feventlistener.c;h=8dde5524144e6c2f76377ca0bf135674cb9e8eb5;hp=9de45196a113ae2a418c7b799df18a18ccc2d616;hb=68b558bcef701bc71b1b7e53f68935f9c632fcdb;hpb=7ff7c0d0b863f7346f21e03b6d170e8c7c6f9878 diff --git a/libspi/eventlistener.c b/libspi/eventlistener.c index 9de4519..8dde552 100644 --- a/libspi/eventlistener.c +++ b/libspi/eventlistener.c @@ -20,145 +20,73 @@ * Boston, MA 02111-1307, USA. */ -/* - * accessibleeventlistener.c: bonobo implementation of Listener.idl, - * with added ability to attach/remove in-process callbacks. - * - */ +/* accessibleeventlistener.c: implementation of SpiListener.idl */ +#include #ifdef SPI_DEBUG #include #endif +#include -#include -#include -#include +/* Our parent Gtk object type */ +#define PARENT_TYPE SPI_LISTENER_TYPE -/* - * This pulls the definition for the BonoboObject (GType) - */ -#include "accessibleeventlistener.h" - -/* - * Our parent Gtk object type - */ -#define PARENT_TYPE LISTENER_TYPE - -/* - * A pointer to our parent object class - */ -static ListenerClass *accessible_event_listener_parent_class; - -/* - * Implemented GObject::finalize - */ -static void -accessible_event_listener_object_finalize (GObject *object) -{ -#ifdef SPI_DEBUG - fprintf(stderr, "listener_object_finalize called\n"); -#endif - ((GObjectClass *) accessible_event_listener_parent_class)->finalize (object); -} +enum { + EVENT, + LAST_SIGNAL +}; +static guint signals [LAST_SIGNAL]; /* * CORBA Accessibility::Listener::notifyEvent method implementation */ - static void impl_accessible_event_notify_event (PortableServer_Servant servant, const Accessibility_Event *e, CORBA_Environment *ev) { - int n; - int len; - VoidEventListenerCB cb; - AccessibleEventListener *listener = ACCESSIBLE_EVENT_LISTENER ( - bonobo_object_from_servant (servant)); - len = g_list_length (listener->callbacks); + SpiEventListener *listener = SPI_EVENT_LISTENER ( + bonobo_object_from_servant (servant)); - for (n=0; nsource != CORBA_OBJECT_NIL) { - cb = (VoidEventListenerCB) g_list_nth_data (listener->callbacks, n); - if (cb) - { - (*cb) (e); - } + Accessibility_Accessible_unref (e->source, ev); } - /* Accessibility_Accessible_unref (e->source, ev); */ } static void -accessible_event_listener_class_init (AccessibleEventListenerClass *klass) +spi_event_listener_class_init (SpiEventListenerClass *klass) { - GObjectClass * object_class = (GObjectClass *) klass; - ListenerClass * listener_class = (ListenerClass *) klass; - POA_Accessibility_EventListener__epv *epv = &listener_class->epv; - accessible_event_listener_parent_class = g_type_class_ref (LISTENER_TYPE); - - object_class->finalize = accessible_event_listener_object_finalize; + SpiListenerClass *spi_listener_class = (SpiListenerClass *) klass; + POA_Accessibility_EventListener__epv *epv = &spi_listener_class->epv; + + signals [EVENT] = g_signal_new ( + "event", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (SpiEventListenerClass, event), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, 1, G_TYPE_POINTER); epv->notifyEvent = impl_accessible_event_notify_event; } static void -accessible_event_listener_init (AccessibleEventListener *listener) +spi_event_listener_init (SpiEventListener *listener) { - listener->callbacks = NULL; } -GType -accessible_event_listener_get_type (void) -{ - static GType type = 0; - - if (!type) { - static const GTypeInfo tinfo = { - sizeof (AccessibleEventListenerClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) accessible_event_listener_class_init, - (GClassFinalizeFunc) NULL, - NULL, /* class data */ - sizeof (Listener), - 0, /* n preallocs */ - (GInstanceInitFunc) accessible_event_listener_init, - NULL /* value table */ - }; - /* - * Here we use bonobo_type_unique instead of - * gtk_type_unique, this auto-generates a load of - * CORBA structures for us. All derived types must - * use bonobo_type_unique. - */ - type = bonobo_type_unique ( - PARENT_TYPE, - POA_Accessibility_EventListener__init, - NULL, - G_STRUCT_OFFSET (ListenerClass, epv), - &tinfo, - "AccessibleEventListener"); - } +BONOBO_TYPE_FUNC (SpiEventListener, + PARENT_TYPE, + spi_event_listener); - return type; -} - -AccessibleEventListener * -accessible_event_listener_new () +SpiEventListener * +spi_event_listener_new () { - AccessibleEventListener *retval = - ACCESSIBLE_EVENT_LISTENER (g_object_new (accessible_event_listener_get_type (), NULL)); + SpiEventListener *retval = g_object_new ( + SPI_EVENT_LISTENER_TYPE, NULL); return retval; } - -void accessible_event_listener_add_callback (AccessibleEventListener *listener, - VoidEventListenerCB callback) -{ - listener->callbacks = g_list_append (listener->callbacks, callback); -} - -void accessible_event_listener_remove_callback (AccessibleEventListener *listener, - VoidEventListenerCB callback) -{ - listener->callbacks = g_list_remove (listener->callbacks, callback); -}