2003-06-26 Padraig O'Briain <padraig.obriain@sun.com>
authorpadraigo <padraigo@e2bd861d-eb25-0410-b326-f6ed22b6b98c>
Thu, 26 Jun 2003 08:25:44 +0000 (08:25 +0000)
committerpadraigo <padraigo@e2bd861d-eb25-0410-b326-f6ed22b6b98c>
Thu, 26 Jun 2003 08:25:44 +0000 (08:25 +0000)
* atk-bridge/bridge.c:
(spi_atk_bridge_init_event_type_consts): Ensure that this function only
looks up signals once.
(atk_bridge_init): Call spi_atk_bridge_init_event_type_consts only
if doing registration.
(spi_atk_bridge_toplevel_added): Call spi_bridge_init_event_type_consts
when doing registration.

This fixes bug #115014.

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

ChangeLog
atk-bridge/bridge.c

index 66ba212..2941dd2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2003-06-26  Padraig O'Briain <padraig.obriain@sun.com>
+
+       * atk-bridge/bridge.c:
+       (spi_atk_bridge_init_event_type_consts): Ensure that this function only
+       looks up signals once.
+       (atk_bridge_init): Call spi_atk_bridge_init_event_type_consts only
+       if doing registration.
+       (spi_atk_bridge_toplevel_added): Call spi_bridge_init_event_type_consts
+       when doing registration.
+       
+       This fixes bug #115014.
+
 2003-06-25  Padraig O'Briain <padraig.obriain@sun.com>
 
        * atk-bridge/bridge.c:
index 4065745..1d3c732 100644 (file)
@@ -123,6 +123,11 @@ extern void gnome_accessibility_module_shutdown (void);
 static void
 spi_atk_bridge_init_event_type_consts ()
 {
+  static gboolean done = FALSE;
+
+  if (done)
+    return;
+
   atk_signal_children_changed = g_signal_lookup ("children_changed", 
                                              ATK_TYPE_OBJECT);
   atk_signal_text_changed = g_signal_lookup ("text_changed", 
@@ -134,6 +139,7 @@ spi_atk_bridge_init_event_type_consts ()
                                              ATK_TYPE_HYPERTEXT);
   atk_signal_text_selection_changed = g_signal_lookup ("text_selection_changed", 
                                              ATK_TYPE_TEXT);
+  done = TRUE;
 }
 
 static int
@@ -176,10 +182,9 @@ atk_bridge_init (gint *argc, gchar **argv[])
   else
     {
       spi_atk_bridge_do_registration ();
+      spi_atk_bridge_init_event_type_consts ();
     }
  
-  spi_atk_bridge_init_event_type_consts ();
-
   return 0;
 }
 
@@ -218,7 +223,10 @@ spi_atk_bridge_toplevel_added (AtkObject *object,
                                AtkObject *child)
 {
   if (toplevels == 0)
-    spi_atk_bridge_do_registration ();
+    {
+      spi_atk_bridge_do_registration ();
+      spi_atk_bridge_init_event_type_consts ();
+    }
   toplevels++;
 }