Bugfix for 78249.
authorbillh <billh@e2bd861d-eb25-0410-b326-f6ed22b6b98c>
Thu, 11 Apr 2002 12:15:19 +0000 (12:15 +0000)
committerbillh <billh@e2bd861d-eb25-0410-b326-f6ed22b6b98c>
Thu, 11 Apr 2002 12:15:19 +0000 (12:15 +0000)
git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@265 e2bd861d-eb25-0410-b326-f6ed22b6b98c

ChangeLog
atk-bridge/bridge.c
test/app.c
test/keysynth-demo.c
test/simple-at.c
util/magnifier.c

index 7145e08..68966ca 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2002-04-11  Bill Haneman <bill.haneman@sun.com>
+
+       * test/app.c, test/keysynth-demo.c:
+       * util/magnifier.c:
+       Replace use of snprintf with g_snprintf.
+       (fix for bugzilla 78249)
+
 2002-03-27  Michael Meeks  <michael@ximian.com>
 
        * Version 0.10.0
index a3e5653..f2fae82 100644 (file)
@@ -397,8 +397,10 @@ spi_atk_bridge_property_event_listener (GSignalInvocationHint *signal_hint,
 
   s2 = g_type_name (G_OBJECT_TYPE (g_value_get_object (param_values + 0)));
   s = atk_object_get_name (ATK_OBJECT (g_value_get_object (param_values + 0)));
-  fprintf (stderr, "Received (property) signal %s:%s from object %s (gail %s)\n",
-          g_type_name (signal_query.itype), name, s, s2);
+  values = (AtkPropertyValues*) g_value_get_pointer (param_values + 1);
+  fprintf (stderr, "Received (property) signal %s:%s:%s from object %s (gail %s)\n",
+          g_type_name (signal_query.itype), name, values->property_name, s, s2);
+  
 #endif
 
   gobject = g_value_get_object (param_values + 0);
index dc676d3..c11b29e 100644 (file)
@@ -53,7 +53,7 @@ main(int argc, char **argv)
           }
 
         /* Create the accesssible application server object */
-        snprintf(sbuf, APP_STATIC_BUFF_SZ, "application-%s", argv[0]);
+        g_snprintf(sbuf, APP_STATIC_BUFF_SZ, "application-%s", argv[0]);
 
         atko = g_object_new (atk_object_get_type(), NULL);
         atk_object_set_name (atko, sbuf);
index 305f805..a3635d0 100644 (file)
@@ -243,7 +243,7 @@ label_buttons(SPIBoolean shifted)
           /* Note: these routines are not i18n-savvy,  we need to use XIM, other methods here */
          if (keysym && g_ascii_isprint((int)keysym))
            {
-             snprintf (label, 2, "%c", (int) keysym); 
+             g_snprintf (label, 2, "%c", (int) keysym); 
            }
          else
            {
index 0bc34bb..d35ade7 100644 (file)
@@ -51,6 +51,7 @@ static void print_accessible_tree (Accessible *accessible, char *prefix);
 static SPIBoolean use_magnifier = FALSE;
 static SPIBoolean use_festival = FALSE;
 static SPIBoolean festival_chatty = FALSE;
+static SPIBoolean name_changed = FALSE;
 
 static AccessibleEventListener *focus_listener;
 static AccessibleEventListener *property_listener;
@@ -94,7 +95,9 @@ main (int argc, char **argv)
   text_listener = SPI_createAccessibleEventListener (report_text_event, NULL); 
   button_listener = SPI_createAccessibleEventListener (report_button_press, NULL);
   SPI_registerGlobalEventListener (focus_listener, "focus:");
-  SPI_registerGlobalEventListener (property_listener, "object:property-change:accessible-selection"); 
+  SPI_registerGlobalEventListener (property_listener, "object:property-change");
+/* :accessible-selection"); */
+  SPI_registerGlobalEventListener (property_listener, "object:property-change:accessible-name");
   SPI_registerGlobalEventListener (generic_listener, "object:selection-changed"); 
   SPI_registerGlobalEventListener (generic_listener, "object:children-changed"); 
   SPI_registerGlobalEventListener (generic_listener, "object:visible-data-changed"); 
@@ -228,6 +231,8 @@ report_focussed_accessible (Accessible *obj, SPIBoolean shutup_previous_speech)
   char *s;
   int len;
   long x, y, width, height;
+  /* hack for GUADEC demo, to make sure name changes are spoken */
+  shutup_previous_speech = (shutup_previous_speech && !name_changed);
 
   if (use_festival)
     {
@@ -309,7 +314,6 @@ report_focus_event (const AccessibleEvent *event, void *user_data)
   char *s;
 
   g_return_if_fail (event->source != NULL);
-
   s = Accessible_getName (event->source);
   if (s)
     {
@@ -318,6 +322,7 @@ report_focus_event (const AccessibleEvent *event, void *user_data)
       report_focussed_accessible (event->source, TRUE);
     }
   Accessible_getParent (event->source);
+  name_changed = FALSE;
 }
 
 void
@@ -329,10 +334,10 @@ report_generic_event (const AccessibleEvent *event, void *user_data)
 void
 report_text_event (const AccessibleEvent *event, void *user_data)
 {
+  AccessibleText *text = Accessible_getText (event->source);
   fprintf (stderr, "%s event received\n", event->type);
-  if (use_magnifier)
+  if (use_magnifier && strcmp (event->type, "object:text-changed"))
     {
-      AccessibleText *text = Accessible_getText (event->source);
       long offset = AccessibleText_getCaretOffset (text);
       long x, y, w, h;
       fprintf (stderr, "offset %d\n", (int) offset);
@@ -341,6 +346,13 @@ report_text_event (const AccessibleEvent *event, void *user_data)
       fprintf (stderr, "new roi %d %d %d %d\n", (int) x, (int) y, (int) w, (int) h);
       magnifier_set_roi ((short) 0, x, y, w, h);
     }
+  if (!strcmp (event->type, "object:text-changed"))
+    {
+      long start, end;
+      char *new_text = AccessibleText_getTextAtOffset (text, (long) 0, SPI_TEXT_BOUNDARY_SENTENCE_START, &start, &end);
+      _festival_say (new_text, "voice_kal_diphone", FALSE);
+      SPI_freeString (new_text);
+    }
 }
 
 void
@@ -366,6 +378,7 @@ check_property_change (const AccessibleEvent *event, void *user_data)
   int n_selections;
   int i;
   char *s;
+  fprintf (stderr, "property change event!\n");
   if (selection)
   {
     n_selections = (int) AccessibleSelection_getNSelectedChildren (selection);
@@ -384,6 +397,15 @@ check_property_change (const AccessibleEvent *event, void *user_data)
        report_focussed_accessible (obj, i==0);
     }
   }
+  else if (!strcmp (event->type, "object:property-change:accessible-name"))
+    {
+      name_changed = TRUE;         
+      report_focussed_accessible (event->source, TRUE);
+    }
+  else
+    {
+      fprintf (stderr, "Property change %s received\n", event->type);
+    }
 }
 
 static void
index 201d75b..f3aa4c6 100644 (file)
@@ -171,7 +171,7 @@ int main (int argc, char** argv){
   }
       /* TODO: enable fractional magnifications option? */
   if (global_options.target_display) {
-    snprintf (env_string, (size_t) (ENV_STRING_MAX_SIZE-1), "DISPLAY=%s", global_options.target_display);
+    g_snprintf (env_string, (size_t) (ENV_STRING_MAX_SIZE-1), "DISPLAY=%s", global_options.target_display);
     putenv (env_string);
   }
   gtk_init (&argc, &argv);