Index: src/orca/scripts/apps/Thunderbird/script.py
===================================================================
--- src/orca/scripts/apps/Thunderbird/script.py	(revision 4183)
+++ src/orca/scripts/apps/Thunderbird/script.py	(working copy)
@@ -156,6 +156,27 @@
 
         return False
 
+    def onCaretMoved(self, event):
+        """Called whenever the caret moves.
+
+        Arguments:
+        - event: the Event
+        """
+
+        # Unlike the unpredictable wild, wild web, odds are good that a
+        # caret-moved event in a message composition window is valid. But
+        # depending upon the locusOfFocus at the time this event is issued
+        # the default Gecko toolkit script might not do the right thing.
+        # Rather than risk breaking access to web content, we'll just set
+        # the locusOfFocus here before sending this event on.
+        #
+        if event.source.getState().contains(pyatspi.STATE_EDITABLE) \
+           and event.detail1 >= 0:
+            orca.setLocusOfFocus(event, event.source, False)
+            self.setCaretContext(event.source, event.detail1)
+
+        return Gecko.Script.onCaretMoved(self, event)
+
     def onFocus(self, event):
         """ Called whenever an object gets focus.
 
