Fixed what seems to have been a botched checking from Dec 21, some fixes
authorbillh <billh@e2bd861d-eb25-0410-b326-f6ed22b6b98c>
Tue, 1 Jan 2002 22:16:04 +0000 (22:16 +0000)
committerbillh <billh@e2bd861d-eb25-0410-b326-f6ed22b6b98c>
Tue, 1 Jan 2002 22:16:04 +0000 (22:16 +0000)
failed to make it in.

git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@193 e2bd861d-eb25-0410-b326-f6ed22b6b98c

cspi/spi_registry.c
libspi/accessible.c
libspi/relation.c
registryd/Makefile.am
registryd/desktop.c
registryd/deviceeventcontroller.c
test/keysynth-demo.c

index f99afc5..0d75803 100644 (file)
@@ -318,9 +318,11 @@ SPI_registerAccessibleKeystrokeListener (AccessibleKeystrokeListener *listener,
     &key_set,
     controller_event_mask,
     &key_events,
-    (CORBA_boolean) ((sync_type & SPI_KEYLISTENER_ALL_WINDOWS)!=0),
+    ((sync_type & SPI_KEYLISTENER_ALL_WINDOWS)!=0) ? CORBA_TRUE : CORBA_FALSE,
     cspi_ev ());
 
+  cspi_return_val_if_ev ("registering keystroke listener", FALSE);
+
   cspi_release_unref (device_event_controller);
 
   return TRUE;
@@ -402,6 +404,7 @@ SPI_generateKeyEvent (long int keyval, AccessibleKeySynthType synth_type)
   Accessibility_DeviceEventController device_event_controller = 
          Accessibility_Registry_getDeviceEventController (cspi_registry (), cspi_ev ());
 
+  g_print ("keyval %d\n", (int) keyval);
   cspi_return_val_if_ev ("getting event controller", FALSE);
 
   Accessibility_DeviceEventController_generateKeyEvent (device_event_controller,
index 76eae96..4b7cac5 100644 (file)
@@ -143,7 +143,7 @@ spi_role_from_atk_role (AtkRole role)
 }
 
 static AtkObject *
-get_accessible_from_servant (PortableServer_Servant servant)
+get_atkobject_from_servant (PortableServer_Servant servant)
 {
   SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant));
 
@@ -161,7 +161,7 @@ impl_accessibility_accessible_get_name (PortableServer_Servant servant,
 {
   const gchar *name;
   CORBA_char  *retval;
-  AtkObject   *object = get_accessible_from_servant (servant);
+  AtkObject   *object = get_atkobject_from_servant (servant);
 
   g_return_val_if_fail (object != NULL, CORBA_string_dup (""));
 
@@ -187,7 +187,7 @@ impl_accessibility_accessible_set_name (PortableServer_Servant servant,
                                         const CORBA_char      *name,
                                         CORBA_Environment     *ev)
 {
-  AtkObject *object = get_accessible_from_servant (servant);
+  AtkObject *object = get_atkobject_from_servant (servant);
 
   g_return_if_fail (object != NULL);
 
@@ -203,7 +203,7 @@ impl_accessibility_accessible_get_description (PortableServer_Servant servant,
 {
   const gchar *descr;
   CORBA_char  *retval;
-  AtkObject   *object = get_accessible_from_servant (servant);
+  AtkObject   *object = get_atkobject_from_servant (servant);
 
   g_return_val_if_fail (object != NULL, CORBA_string_dup (""));
 
@@ -229,7 +229,7 @@ impl_accessibility_accessible_set_description (PortableServer_Servant servant,
                                                const CORBA_char      *descr,
                                                CORBA_Environment     *ev)
 {
-  AtkObject *object = get_accessible_from_servant (servant);
+  AtkObject *object = get_atkobject_from_servant (servant);
 
   g_return_if_fail (object != NULL);
 
@@ -244,7 +244,7 @@ impl_accessibility_accessible_get_parent (PortableServer_Servant servant,
                                           CORBA_Environment     *ev)
 {
   AtkObject *parent;
-  AtkObject *object = get_accessible_from_servant (servant);
+  AtkObject *object = get_atkobject_from_servant (servant);
 
   g_return_val_if_fail (object != NULL, CORBA_OBJECT_NIL);
 
@@ -260,7 +260,7 @@ static CORBA_long
 impl_accessibility_accessible_get_index_in_parent (PortableServer_Servant servant,
                                                    CORBA_Environment     *ev)
 {
-  AtkObject *object = get_accessible_from_servant (servant);
+  AtkObject *object = get_atkobject_from_servant (servant);
 
   g_return_val_if_fail (object != NULL, -1);
 
@@ -274,7 +274,7 @@ static CORBA_long
 impl_accessibility_accessible_get_child_count (PortableServer_Servant servant,
                                                CORBA_Environment     *ev)
 {
-  AtkObject *object = get_accessible_from_servant (servant);
+  AtkObject *object = get_atkobject_from_servant (servant);
 
   g_return_val_if_fail (object != NULL, 0);
 
@@ -290,7 +290,7 @@ impl_accessibility_accessible_get_child_at_index (PortableServer_Servant servant
                                                   CORBA_Environment     *ev)
 {
   AtkObject *child;
-  AtkObject *object = get_accessible_from_servant (servant);
+  AtkObject *object = get_atkobject_from_servant (servant);
 
   g_return_val_if_fail (object != NULL, 0);
 
@@ -306,7 +306,7 @@ static Accessibility_StateSet
 impl_accessibility_accessible_get_state (PortableServer_Servant servant,
                                         CORBA_Environment     *ev)
 {
-  AtkObject *object = get_accessible_from_servant (servant);
+  AtkObject *object = get_atkobject_from_servant (servant);
 
   bonobo_return_val_if_fail (object != NULL, NULL, ev);
 
@@ -327,7 +327,7 @@ impl_accessibility_accessible_get_relation_set (PortableServer_Servant servant,
   gint n_relations;
   gint i;
   AtkRelationSet *relation_set;
-  AtkObject      *object = get_accessible_from_servant (servant);
+  AtkObject      *object = get_atkobject_from_servant (servant);
 
   bonobo_return_val_if_fail (object != NULL, NULL, ev);
 
@@ -359,7 +359,7 @@ impl_accessibility_accessible_get_role (PortableServer_Servant servant,
 {
   AtkRole            role;
   Accessibility_Role retval;
-  AtkObject         *object = get_accessible_from_servant (servant);
+  AtkObject         *object = get_atkobject_from_servant (servant);
 
   g_return_val_if_fail (object != NULL, 0);
 
@@ -378,7 +378,7 @@ impl_accessibility_accessible_get_role_name (PortableServer_Servant servant,
 {
   AtkRole            role;
   Accessibility_Role retval;
-  AtkObject         *object = get_accessible_from_servant (servant);
+  AtkObject         *object = get_atkobject_from_servant (servant);
 
   g_return_val_if_fail (object != NULL, 0);
 
index 9fb3de5..260cd84 100644 (file)
@@ -32,7 +32,7 @@ spi_relation_new (AtkRelation *obj)
 {
   SpiRelation *new_relation = g_object_new (SPI_RELATION_TYPE, NULL);
 
-  spi_base_construct (SPI_BASE (new_relation), ATK_OBJECT (obj));
+  spi_base_construct (SPI_BASE (new_relation), G_OBJECT (obj));
 
   return new_relation;
 }
index 2ec4a12..b586b9a 100644 (file)
@@ -15,7 +15,7 @@ registryd_SOURCES =           \
        registry.c              \
        registry.h
 
-LDADD = ../libspi/libspi.la -lXtst $(REGISTRYD_LIBS) 
+LDADD = ../libspi/libspi.la $(XTST_LIBS) $(REGISTRYD_LIBS) 
 
 serverinfodir = $(libdir)/bonobo/servers
 serverinfo_DATA = Accessibility_Registry.server
index 305f7d7..70da90d 100644 (file)
@@ -41,11 +41,11 @@ static SpiAccessibleClass *parent_class;
 static void
 spi_desktop_init (SpiDesktop *desktop)
 {
-  spi_base_construct_default (SPI_BASE (desktop));
+  spi_base_construct (SPI_BASE (desktop), g_object_new (ATK_TYPE_OBJECT, NULL));
 
   desktop->applications = NULL;
 
-  atk_object_set_name (ATK_OBJECT(SPI_BASE (desktop)->gobj), "main");
+  atk_object_set_name (ATK_OBJECT (SPI_BASE (desktop)->gobj), "main");
 }
 
 static void
index 2ccff17..90bb733 100644 (file)
@@ -47,8 +47,6 @@ static GObjectClass *spi_device_event_controller_parent_class;
 
 static gboolean kbd_registered = FALSE;
 
-static Display *display;
-
 static Window root_window;
 
 typedef enum {
@@ -93,7 +91,24 @@ static void spi_controller_register_device_listener (SpiDeviceEventController *c
  * Private methods
  */
 
-static DEControllerGrabMask * 
+static Display *
+spi_get_display (void )
+{
+ static Display *display = NULL;
+ /* We must open a new connection to the server to avoid clashing with the GDK event loop */
+ /*
+  * TODO: fixme, this makes the foolish assumption that registryd uses
+  * the same display as the apps, and the the DISPLAY environment variable is set.
+  */
+ if (!display)
+   {
+     display = XOpenDisplay (g_getenv ("DISPLAY"));
+   }
+ return display;
+}
+
+static DEControllerGrabMask *
 spi_grabmask_clone (DEControllerGrabMask *grabmask)
 {
   DEControllerGrabMask *clone = g_new0 (DEControllerGrabMask, 1);
@@ -220,7 +235,7 @@ spi_controller_register_global_keygrabs (SpiDeviceEventController *controller,
          /* X Grabs require keycodes, not keysyms */
          if (keyval >= 0)
            {
-             keyval = XKeysymToKeycode(display, (KeySym) keyval);                  
+             keyval = XKeysymToKeycode(spi_get_display (), (KeySym) keyval);               
            }
          grabmask.keyval = keyval;
           list_ptr = g_list_find_custom (controller->keygrabs_list, &grabmask,
@@ -307,14 +322,10 @@ spi_controller_register_with_devices (SpiDeviceEventController *controller)
   /* calls to device-specific implementations and routines go here */
   /* register with: keyboard hardware code handler */
   /* register with: (translated) keystroke handler */
-#ifdef SPI_DEBUG
-  fprintf (stderr, "About to request events on window %ld of display %p\n",
-          (unsigned long) GDK_ROOT_WINDOW(), GDK_DISPLAY());
-#endif
+
   /* We must open a new connection to the server to avoid clashing with the GDK event loop */
-  display = XOpenDisplay (g_getenv ("DISPLAY"));
-  root_window = DefaultRootWindow (display);           
-  XSelectInput (display,
+  root_window = DefaultRootWindow (spi_get_display ());                
+  XSelectInput (spi_get_display (),
                root_window,
                KeyPressMask | KeyReleaseMask);
   /* register with: mouse hardware device handler? */
@@ -389,6 +400,7 @@ spi_key_event_matches_listener (const Accessibility_DeviceEvent *key_event,
                            DEControllerKeyListener *listener,
                            CORBA_boolean is_system_global)
 {
+  g_print ("checking keycode %d\n", (int) key_event->hw_code);
   if ((key_event->modifiers == (CORBA_unsigned_short) (listener->mask & 0xFFFF)) &&
        spi_key_set_contains_key (listener->keys, key_event) &&
        spi_key_eventtype_seq_contains_event (listener->typeseq, key_event) && 
@@ -517,9 +529,9 @@ spi_check_key_event (SpiDeviceEventController *controller)
          CORBA_exception_init (&ev);
        }
 
-       while (XPending(display))
+       while (XPending(spi_get_display ()))
          {
-           XNextEvent (display, x_event);
+           XNextEvent (spi_get_display (), x_event);
            if (XFilterEvent (x_event, None)) continue;   
            if (x_event->type == KeyPress || x_event->type == KeyRelease)
              {
@@ -536,14 +548,14 @@ spi_check_key_event (SpiDeviceEventController *controller)
 
            if (is_consumed)
              {
-               XAllowEvents (display, AsyncKeyboard, CurrentTime);
+               XAllowEvents (spi_get_display (), AsyncKeyboard, CurrentTime);
              }
            else
              {
-               XAllowEvents (display, ReplayKeyboard, CurrentTime);
+               XAllowEvents (spi_get_display (), ReplayKeyboard, CurrentTime);
              }
          }
-       XUngrabKey (display, AnyKey, AnyModifier, root_window);
+       XUngrabKey (spi_get_display (), AnyKey, AnyModifier, root_window);
 
        return spi_controller_grab_keyboard (controller);
 }
@@ -582,7 +594,7 @@ spi_controller_grab_keyboard (SpiDeviceEventController *controller)
 #endif
       if (!(maskVal & ControlMask))
        {
-         XGrabKey (display,
+         XGrabKey (spi_get_display (),
                    keyVal, 
                    maskVal,
                    root_window,
@@ -607,11 +619,11 @@ spi_device_event_controller_object_finalize (GObject *object)
 {
 
 #ifdef SPI_DEBUG
-        fprintf(stderr, "spi_device_event_controller_object_finalize called\n");
+  fprintf(stderr, "spi_device_event_controller_object_finalize called\n");
 #endif
-       /* disconnect any special listeners, get rid of outstanding keygrabs */
+  /* disconnect any special listeners, get rid of outstanding keygrabs */
        
-        spi_device_event_controller_parent_class->finalize (object);
+  spi_device_event_controller_parent_class->finalize (object);
 }
 
 /*
@@ -627,15 +639,19 @@ impl_register_keystroke_listener (PortableServer_Servant     servant,
                                  const CORBA_boolean is_system_global,
                                  CORBA_Environment         *ev)
 {
-       SpiDeviceEventController *controller = SPI_DEVICE_EVENT_CONTROLLER (
-               bonobo_object_from_servant (servant));
-       DEControllerKeyListener *dec_listener;
+  SpiDeviceEventController *controller = SPI_DEVICE_EVENT_CONTROLLER (
+         bonobo_object_from_servant (servant));
+  DEControllerKeyListener *dec_listener;
 #ifdef SPI_DEBUG
-       fprintf (stderr, "registering keystroke listener %p with maskVal %lu\n",
-                (void *) l, (unsigned long) mask);
+  fprintf (stderr, "registering keystroke listener %p with maskVal %lu\n",
+          (void *) l, (unsigned long) mask);
 #endif
-       dec_listener = spi_dec_key_listener_new (l, keys, mask, type, is_system_global, ev);
-       spi_controller_register_device_listener (controller, (DEControllerListener *) dec_listener, ev);
+  dec_listener = spi_dec_key_listener_new (l, keys, mask, type,
+                                          is_system_global, ev);
+  
+  spi_controller_register_device_listener (controller,
+                                          (DEControllerListener *) dec_listener,
+                                          ev);
 }
 
 /*
@@ -691,7 +707,7 @@ impl_register_mouse_listener (PortableServer_Servant     servant,
 static KeyCode
 keycode_for_keysym (long keysym)
 {
-  return XKeysymToKeycode (display, (KeySym) keysym);
+  return XKeysymToKeycode (spi_get_display (), (KeySym) keysym);
 }
 
 /*
@@ -706,7 +722,7 @@ impl_generate_key_event (PortableServer_Servant     servant,
 {
        long key_synth_code;
 #ifdef SPI_DEBUG
-       fprintf (stderr, "synthesizing keystroke %ld\n", (long) keycode);
+       fprintf (stderr, "synthesizing keystroke %ld, type %d\n", (long) keycode, (int) synth_type);
 #endif
        /* TODO: hide/wrap/remove X dependency */
 
@@ -720,17 +736,17 @@ impl_generate_key_event (PortableServer_Servant     servant,
        switch (synth_type)
        {
        case Accessibility_KEY_PRESS:
-               XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) keycode, True, CurrentTime);
+               XTestFakeKeyEvent (spi_get_display (), (unsigned int) keycode, True, CurrentTime);
                break;
        case Accessibility_KEY_PRESSRELEASE:
-               XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) keycode, True, CurrentTime);
+               XTestFakeKeyEvent (spi_get_display (), (unsigned int) keycode, True, CurrentTime);
        case Accessibility_KEY_RELEASE:
-               XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) keycode, False, CurrentTime);
+               XTestFakeKeyEvent (spi_get_display (), (unsigned int) keycode, False, CurrentTime);
                break;
        case Accessibility_KEY_SYM:
                key_synth_code = keycode_for_keysym (keycode);
-               XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) key_synth_code, True, CurrentTime);
-               XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) key_synth_code, False, CurrentTime);
+               XTestFakeKeyEvent (spi_get_display (), (unsigned int) key_synth_code, True, CurrentTime);
+               XTestFakeKeyEvent (spi_get_display (), (unsigned int) key_synth_code, False, CurrentTime);
                break;
        }
 }
index ebf00c1..e43b710 100644 (file)
@@ -338,14 +338,14 @@ switch_callback (AccessibleKeystroke *key, void *user_data)
 
   if (key->type == SPI_KEY_RELEASED)
     {
-      g_print ("spacebar up\n");
+      g_print ("switch up\n");
       is_down = FALSE;
       scan_stop (key->timestamp);
     }
   else 
   if (!is_down)
     {
-      g_print ("spacebar down\n");
+      g_print ("switch down\n");
       is_down = TRUE;
       scan_start (key->timestamp);
     }
@@ -491,9 +491,11 @@ main (int argc, char **argv)
    */
   switch_set.keysyms = g_new0 (unsigned long, 1);
   switch_set.keycodes = g_new0 (unsigned short, 1);
+  switch_set.keystrings = g_new0 (char *, 1);
   switch_set.len = 1;
   switch_set.keysyms[0] = (unsigned long) 0;
   switch_set.keycodes[0] = (unsigned short) 0;
+  switch_set.keystrings[0] = "";
   switch_listener = SPI_createAccessibleKeystrokeListener (switch_callback, NULL);
   SPI_registerAccessibleKeystrokeListener (switch_listener,
                                           &switch_set,