Index: src/orca/scripts/apps/Thunderbird/script.py
===================================================================
--- src/orca/scripts/apps/Thunderbird/script.py	(revision 3893)
+++ src/orca/scripts/apps/Thunderbird/script.py	(working copy)
@@ -212,3 +212,21 @@
 
         char = self.getCharacterAtOffset(obj, offset)
         return char == "\n"
+
+    def useCaretNavigationModel(self, keyboardEvent):
+        """Returns True if we should do our own caret navigation.
+        """
+        [obj, offset] = self.getCaretContext()
+        if obj.getState().contains(pyatspi.STATE_EDITABLE):
+            return self.isBlockquote(obj)
+        else:
+            return Gecko.Script.useCaretNavigationModel(self, keyboardEvent)
+
+    def useStructuralNavigationModel(self):
+        """Returns True if we should do our own structural navigation.
+        """
+        [obj, offset] = self.getCaretContext()
+        if obj.getState().contains(pyatspi.STATE_EDITABLE):
+            return False
+        else:
+            return Gecko.Script.useStructuralNavigationModel(self)
Index: src/orca/scripts/toolkits/Gecko/script.py
===================================================================
--- src/orca/scripts/toolkits/Gecko/script.py	(revision 3893)
+++ src/orca/scripts/toolkits/Gecko/script.py	(working copy)
@@ -114,7 +114,9 @@
              Script.goPreviousWord,
              Script.goNextLine,
              Script.goPreviousLine,
-             Script.expandComboBox]
+             Script.expandComboBox,
+             Script.goTopOfFile,
+             Script.goBottomOfFile]
 
         # _structuralNavigationFunctions are functions that represent
         # more complex navigation functions (e.g., moving by heading,
