Index: tolbase/lib/toltk/bystext.tcl
===================================================================
--- tolbase/lib/toltk/bystext.tcl	(revision 0e07e126d545df005f7763b9d4712bf0f782eb96)
+++ tolbase/lib/toltk/bystext.tcl	(revision d63dfa7e980c1c75cd06a2362a87fbe441066014)
@@ -843,5 +843,23 @@
 }
 
+proc ::BayesText::DlgEscapeTextIdle { w } {
+  variable DlgEscapeTextData
+
+  if { [ winfo exists $w ] } {
+    set f [ $w getframe ]
+    set buffer [ $f.o get 1.0 "end -1 char" ]
+    if { $buffer ne $DlgEscapeTextData(buffer) } {
+      $f.t del 1.0 end
+      $f.t ins end [ ::BayesText::TolEscape $buffer ]
+      set DlgEscapeTextData(buffer) $buffer
+    }
+    update
+    after idle [ list ::BayesText::DlgEscapeTextIdle $w ]
+  }
+}
+
 proc ::BayesText::DlgEscapeText { editor } {
+  variable DlgEscapeTextData
+
   set w .dlgescape
   if { [ winfo exists $w ] } {
@@ -859,14 +877,4 @@
     label $f.lt -text [ mc "Transformed:" ]
     rotext $f.t -width 40 -height 4
-    bind $f.o <<Modified>> {
-      if { [ %W edit modified ] == 1 } {
-        set f [ winfo parent %W ]
-        set tt $f.t
-        set buffer [ %W get 1.0 "end -1 char" ]
-        $tt del 1.0 end
-        $tt ins end [ ::BayesText::TolEscape $buffer ]
-        %W edit modified 0
-      }
-    }
     grid $f.lo -row 0 -column 0 -sticky w
     grid $f.o -row 1 -column 0 -sticky snew
@@ -880,4 +888,6 @@
   }
   $f.o delete 1.0 end
+  $f.t del 1.0 end
+  set DlgEscapeTextData(buffer) ""
   set idxs [ $editor tag ranges sel ]
   if { [ llength $idxs ] } {
@@ -885,4 +895,6 @@
   }
   $w itemconfigure 1 -command [ list ::BayesText::DlgEscapeTextApply $editor ]
+  update
+  after idle [ list ::BayesText::DlgEscapeTextIdle $w ]
 }
 
