+report_caret_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ long int start, end, offset, line_start_begin;
+ long int line_start_end, line_end_begin, line_end_end;
+
+ AccessibleText *text = Accessible_getText (event->source);
+ offset = event->detail1;
+ AccessibleText_getTextAtOffset (text, offset,
+ SPI_TEXT_BOUNDARY_SENTENCE_START,
+ &start, &end);
+ fprintf (stderr,
+ "caret event from %s %s: offset %d, SENTENCE_START offsets start=%d, end=%d\n",
+ event->type, s, offset, start, end);
+ AccessibleText_getTextAtOffset (text, offset,
+ SPI_TEXT_BOUNDARY_SENTENCE_END,
+ &start, &end);
+ AccessibleText_getTextAtOffset (text, offset,
+ SPI_TEXT_BOUNDARY_LINE_START,
+ &line_start_begin, &line_start_end);
+ AccessibleText_getTextAtOffset (text, offset,
+ SPI_TEXT_BOUNDARY_LINE_END,
+ &line_end_begin, &line_end_end);
+ fprintf (stderr,
+ "SENTENCE_END: %d - %d; LINE_START: %d - %d; LINE_END: %d - %d\n",
+ start, end, line_start_begin, line_start_end,
+ line_end_begin, line_end_end);
+
+ AccessibleText_getTextAtOffset (text, offset,
+ SPI_TEXT_BOUNDARY_WORD_START,
+ &line_start_begin, &line_start_end);
+ AccessibleText_getTextAtOffset (text, offset,
+ SPI_TEXT_BOUNDARY_WORD_END,
+ &line_end_begin, &line_end_end);
+ fprintf (stderr,
+ "WORD_START: %d - %d; WORD_END: %d - %d\n",
+ line_start_begin, line_start_end,
+ line_end_begin, line_end_end);
+
+ if (s) SPI_freeString (s);
+}
+
+void