Index: src/orca/scripts/toolkits/Gecko/script.py
===================================================================
--- src/orca/scripts/toolkits/Gecko/script.py	(revision 4146)
+++ src/orca/scripts/toolkits/Gecko/script.py	(working copy)
@@ -2133,8 +2133,8 @@
         if len(line.regions):
             line.regions[-1].string.rstrip(" ")
 
-        braille.setFocus(focusedRegion)
-        braille.refresh(True)
+        braille.setFocus(focusedRegion, getMask=False)
+        braille.refresh(panToCursor=True, getMask=False)
 
     def sayCharacter(self, obj):
         """Speaks the character at the current caret position."""
Index: src/orca/braille.py
===================================================================
--- src/orca/braille.py	(revision 4146)
+++ src/orca/braille.py	(working copy)
@@ -723,12 +723,18 @@
     def addRegions(self, regions):
         self.regions.extend(regions)
 
-    def getLineInfo(self):
+    def getLineInfo(self, getMask=True):
         """Computes the complete string for this line as well as a
         0-based index where the focused region starts on this line.
         If the region with focus is not on this line, then the index
         will be -1.
 
+        Arguments:
+        - getMask: Whether or not we should take the time to get the
+          attributeMask. Reasons we might not want to include knowing
+          darned well that we will fail and it taking an unreasonable
+          amount of time (AKA Gecko).
+
         Returns [string, offsetIndex, attributeMask]
         """
 
@@ -744,7 +750,12 @@
                 # BrlTTY.]]]
                 #
                 string += region.string.replace("\342\200\246", "...")
-            mask = region.getAttributeMask()
+            if getMask:
+                mask = region.getAttributeMask()
+            else:
+                # Get an empty mask.
+                #
+                mask = Region.getAttributeMask(region)
             attributeMask += mask
 
         return [string, focusOffset, attributeMask]
@@ -840,13 +851,16 @@
     """
     return _lines[viewport[1]]
 
-def setFocus(region, panToFocus=True):
+def setFocus(region, panToFocus=True, getMask=True):
     """Specififes the region with focus.  This region will be positioned
     at the home position if panToFocus is True.
 
     Arguments:
     - region: the given region, which much be in a line that has been
-              added to the logical display
+      added to the logical display
+    - panToFocus: whether or not to position the region at the home
+      position
+    - getMask: whether or not to attempt to get the attribute mask
     """
 
     global _regionWithFocus
@@ -877,7 +891,7 @@
             lineNum += 1
 
     line = _lines[viewport[1]]
-    [string, offset, attributeMask] = line.getLineInfo()
+    [string, offset, attributeMask] = line.getLineInfo(getMask)
 
     # If the cursor is too far right, we scroll the viewport
     # so the cursor will be on the last cell of the display.
@@ -887,7 +901,7 @@
 
     viewport[0] = max(0, offset)
 
-def refresh(panToCursor=True, targetCursorCell=0):
+def refresh(panToCursor=True, targetCursorCell=0, getMask=True):
     """Repaints the Braille on the physical display.  This clips the entire
     logical structure by the viewport and also sets the cursor to the
     appropriate location.  [[[TODO: WDW - I'm not sure how BrlTTY handles
@@ -897,14 +911,14 @@
     Arguments:
 
     - panToCursor: if True, will adjust the viewport so the cursor is
-                   showing.
+      showing.
     - targetCursorCell: Only effective if panToCursor is True.
-                        0 means automatically place the cursor somewhere
-                        on the display so as to minimize movement but
-                        show as much of the line as possible.  A positive
-                        value is a 1-based target cell from the left side
-                        of the display and a negative value is a 1-based
-                        target cell from the right side of the display.
+      0 means automatically place the cursor somewhere on the display so
+      as to minimize movement but show as much of the line as possible.
+      A positive value is a 1-based target cell from the left side of
+      the display and a negative value is a 1-based target cell from the
+      right side of the display.
+    - getMask: whether or not to attempt to get the attribute mask
     """
 
     global endIsShowing
@@ -932,7 +946,7 @@
     # actually is in the string.
     #
     line = _lines[viewport[1]]
-    [string, focusOffset, attributeMask] = line.getLineInfo()
+    [string, focusOffset, attributeMask] = line.getLineInfo(getMask)
     cursorOffset = -1
     if focusOffset >= 0:
         cursorOffset = focusOffset + _regionWithFocus.cursorOffset
