+void
+report_window_event (const AccessibleEvent *event, void *user_data)
+{
+ fprintf (stderr, "%s event received\n", event->type);
+ if (!strcmp (event->type, "window:activate"))
+ {
+ print_accessible_tree (event->source, "window");
+ }
+}
+
+void
+report_text_event (const AccessibleEvent *event, void *user_data)
+{
+ AccessibleText *text = Accessible_getText (event->source);
+ fprintf (stderr, "%s event received\n", event->type);
+#ifdef MAGNIFIER_ENABLED
+ if (use_magnifier && strcmp (event->type, "object:text-changed"))
+ {
+ long offset = AccessibleText_getCaretOffset (text);
+ long x, y, w, h;
+ fprintf (stderr, "offset %d\n", (int) offset);
+ AccessibleText_getCharacterExtents (text, offset, &x, &y, &w, &h,
+ SPI_COORD_TYPE_SCREEN);
+ 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);
+ }
+#endif
+ if (!strcmp (event->type, "object:text-changed"))
+ {
+ long start, end;
+ char *new_text = AccessibleText_getTextAtOffset (text, (long) event->detail1, SPI_TEXT_BOUNDARY_WORD_START, &start, &end);
+ _festival_say (new_text, "voice_kal_diphone", FALSE);
+ fprintf (stderr, "text changed: %s", new_text ? new_text : "");
+ SPI_freeString (new_text);
+ }
+ else
+ {
+ long start, end;
+ char *word_text = AccessibleText_getTextAtOffset (text, (long) event->detail1, SPI_TEXT_BOUNDARY_WORD_START, &start, &end);
+ char *sentence_text = AccessibleText_getTextAtOffset (text, (long) event->detail1, SPI_TEXT_BOUNDARY_SENTENCE_START, &start, &end);
+ fprintf (stderr, "text changed: word %s; sentence %s at %ld",
+ (word_text ? word_text : ""),
+ (sentence_text ? sentence_text : ""),
+ event->detail1);
+ if (word_text) SPI_freeString (word_text);
+ if (sentence_text) SPI_freeString (sentence_text);
+ }
+}
+
+void
+report_button_press (const AccessibleEvent *event, void *user_data)
+{
+ char *s;
+
+ g_return_if_fail (event->source != NULL);
+
+ s = Accessible_getName (event->source);
+
+ fprintf (stderr, "%s event from %s\n", event->type, s);
+ SPI_freeString (s);
+ s = Accessible_getDescription (event->source);
+ fprintf (stderr, "Object description %s\n", s);
+ SPI_freeString (s);
+}