Index: gnopernicus/srcore/srmain.c
===================================================================
RCS file: /cvs/gnome/gnopernicus/srcore/srmain.c,v
retrieving revision 1.142.2.5
diff -u -r1.142.2.5 srmain.c
--- gnopernicus/srcore/srmain.c	10 Nov 2004 13:30:55 -0000	1.142.2.5
+++ gnopernicus/srcore/srmain.c	16 Nov 2004 14:16:41 -0000
@@ -213,8 +213,20 @@
 
     src_enable_format_string = TRUE; 
     sro_get_role (obj, &role, SR_INDEX_CONTAINER);
-    if (strcmp (reason, "object:text-changed:insert") == 0
-	    && (role == SR_ROLE_TEXT_SL || role == SR_ROLE_TEXT_ML || role == SR_ROLE_TERMINAL))
+    if (strcmp (reason, "object:text-changed:insert") == 0 && role == SR_ROLE_TERMINAL)
+    {
+	gchar *diff;
+	if (sro_text_get_difference (obj, &diff, SR_INDEX_CONTAINER))
+	{
+	    gchar *txt;
+	    txt = src_xml_format ("TEXT", src_speech_get_voice ("text"), diff);
+	    src_speech_send_chunk (txt, SRC_SPEECH_PRIORITY_IDLE, FALSE);
+	    SR_freeString (diff);
+	    g_free (txt);
+	}	    
+    }
+    else if (strcmp (reason, "object:text-changed:insert") == 0
+	    && (role == SR_ROLE_TEXT_SL || role == SR_ROLE_TEXT_ML))
     {
 	gchar *diff;
 	if (sro_text_get_difference (obj, &diff, SR_INDEX_CONTAINER))
Index: gnopernicus/srlow/libsrlow/SRLow.c
===================================================================
RCS file: /cvs/gnome/gnopernicus/srlow/libsrlow/SRLow.c,v
retrieving revision 1.104.2.4
diff -u -r1.104.2.4 SRLow.c
--- gnopernicus/srlow/libsrlow/SRLow.c	10 Nov 2004 13:30:55 -0000	1.104.2.4
+++ gnopernicus/srlow/libsrlow/SRLow.c	16 Nov 2004 14:16:49 -0000
@@ -1127,15 +1127,20 @@
     srl_log_important_event (event);
     priority = srle_get_priority (event);
     srl_assert (0 <= priority && priority < SRL_EVENT_PRIORITY_LAST);
+
     for (i = 0; i <= priority; i++)
     {
 	SRLEvent *ev;
 	ev = srl_last_events[i];
 	srl_last_events[i] = NULL;
 	if (ev)
+	{
+	    if (ev->type == SRL_EVENT_TEXT_CHANGED_INSERT && Accessible_getRole (ev->acc_ev->source) == SPI_ROLE_TERMINAL)
+		srl_notify_clients_obj (ev, SR_EVENT_SRO);
 	    srle_free (ev);
+	}
     }
-	    
+
     srl_last_events[priority] = srle_dup (event);
 
     /* ideea is to have only one idle callback active.
