2001-11-13 Michael Meeks <michael@ximian.com>
[platform/core/uifw/at-spi2-atk.git] / libspi / eventlistener.c
index 8f4eaa2..ebe28e9 100644 (file)
@@ -21,7 +21,7 @@
  */
 
 /*
- * accessibleeventlistener.c: bonobo implementation of Listener.idl,
+ * accessibleeventlistener.c: bonobo implementation of SpiListener.idl,
  *   with added ability to attach/remove in-process callbacks.
  *
  */
 /*
  * Our parent Gtk object type
  */
-#define PARENT_TYPE LISTENER_TYPE
+#define PARENT_TYPE SPI_LISTENER_TYPE
 
 /*
  * A pointer to our parent object class
  */
-static ListenerClass *accessible_event_listener_parent_class;
+static SpiListenerClass *spi_accessible_event_listener_parent_class;
 
 /*
  * Implemented GObject::finalize
  */
 static void
-accessible_event_listener_object_finalize (GObject *object)
+spi_accessible_event_listener_object_finalize (GObject *object)
 {
 #ifdef SPI_DEBUG
-        fprintf(stderr, "listener_object_finalize called\n");
+        fprintf(stderr, "spi_listener_object_finalize called\n");
 #endif
-        ((GObjectClass *) accessible_event_listener_parent_class)->finalize (object);
+        ((GObjectClass *) spi_accessible_event_listener_parent_class)->finalize (object);
 }
 
 /*
@@ -70,56 +70,59 @@ 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 (
+  SpiAccessibleEventListener *listener = SPI_ACCESSIBLE_EVENT_SPI_LISTENER (
                                        bonobo_object_from_servant (servant));
   len = g_list_length (listener->callbacks);
 
   for (n=0; n<len; ++n)
     {
       cb =  (VoidEventListenerCB) g_list_nth_data (listener->callbacks, n);
-      (*cb) (NULL);
+      if (cb)
+        {
+          (*cb) (e);
+        }
     }
-  bonobo_object_release_unref (e->target, ev);
+  /* Accessibility_Accessible_unref (e->source, ev); */
 }
 
 static void
-accessible_event_listener_class_init (AccessibleEventListenerClass *klass)
+spi_accessible_event_listener_class_init (SpiAccessibleEventListenerClass *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);
+        SpiListenerClass * spi_listener_class = (SpiListenerClass *) klass;
+        POA_Accessibility_EventListener__epv *epv = &spi_listener_class->epv;
+        spi_accessible_event_listener_parent_class = g_type_class_ref (SPI_LISTENER_TYPE);
 
-        object_class->finalize = accessible_event_listener_object_finalize;
+        object_class->finalize = spi_accessible_event_listener_object_finalize;
 
         epv->notifyEvent = impl_accessible_event_notify_event;
 }
 
 static void
-accessible_event_listener_init (Listener *listener)
+spi_accessible_event_listener_init (SpiAccessibleEventListener *listener)
 {
+        listener->callbacks = NULL;
 }
 
 GType
-accessible_event_listener_get_type (void)
+spi_accessible_event_listener_get_type (void)
 {
         static GType type = 0;
 
         if (!type) {
                 static const GTypeInfo tinfo = {
-                        sizeof (AccessibleEventListenerClass),
+                        sizeof (SpiAccessibleEventListenerClass),
                         (GBaseInitFunc) NULL,
                         (GBaseFinalizeFunc) NULL,
-                        (GClassInitFunc) accessible_event_listener_class_init,
+                        (GClassInitFunc) spi_accessible_event_listener_class_init,
                         (GClassFinalizeFunc) NULL,
                         NULL, /* class data */
-                        sizeof (Listener),
+                        sizeof (SpiListener),
                         0, /* n preallocs */
-                        (GInstanceInitFunc) accessible_event_listener_init,
+                        (GInstanceInitFunc) spi_accessible_event_listener_init,
                         NULL /* value table */
                 };
                 /*
@@ -132,30 +135,30 @@ accessible_event_listener_get_type (void)
                         PARENT_TYPE,
                         POA_Accessibility_EventListener__init,
                         NULL,
-                        G_STRUCT_OFFSET (ListenerClass, epv),
+                        G_STRUCT_OFFSET (SpiListenerClass, epv),
                         &tinfo,
-                        "AccessibleEventListener");
+                        "SpiAccessibleEventListener");
         }
 
         return type;
 }
 
-AccessibleEventListener *
-accessible_event_listener_new ()
+SpiAccessibleEventListener *
+spi_accessible_event_listener_new ()
 {
-    AccessibleEventListener *retval =
-               LISTENER (g_object_new (accessible_event_listener_get_type (), NULL));
+    SpiAccessibleEventListener *retval =
+    SPI_ACCESSIBLE_EVENT_SPI_LISTENER (g_object_new (spi_accessible_event_listener_get_type (), NULL));
     return retval;
 }
 
-void   accessible_event_listener_add_callback (AccessibleEventListener *listener,
+void   spi_accessible_event_listener_add_callback (SpiAccessibleEventListener *listener,
                                                VoidEventListenerCB callback)
 {
-  listener->callbacks = g_list_append (listener->callbacks, listener);
+  listener->callbacks = g_list_append (listener->callbacks, callback);
 }
 
-void   accessible_event_listener_remove_callback (AccessibleEventListener *listener,
+void   spi_accessible_event_listener_remove_callback (SpiAccessibleEventListener *listener,
                                                   VoidEventListenerCB callback)
 {
-  listener->callbacks = g_list_remove (listener->callbacks, listener);
+  listener->callbacks = g_list_remove (listener->callbacks, callback);
 }