Index: src/Perks/FirefoxPerk.py
===================================================================
--- src/Perks/FirefoxPerk.py	(revision 757)
+++ src/Perks/FirefoxPerk.py	(working copy)
@@ -917,10 +917,8 @@
       elif self._needsFocus(next_por):
         # set focus to a manipulable
         self.setAccPOR(next_por)
-        # inhibit the focus announcement to follow
-        # PP: temporarily removed while fixing interrupt problems; will restore
-        # when fixing clipping bugs
-        self.inhibitMayStop()
+        # block the selector task and let HandleFocusChange make announcement
+        self.blockNTasks(1, Task.SelectorTask)
       # register/unregister convenience review keys 
       self.perk.setModeByPOR(self.task_por)
     elif in_doc and not next_in_doc:
@@ -981,6 +979,7 @@
         outtext != self.getPerkVar("BasicSpeechPerk", "last_role")):
       if not ((role in self.perk.SKIPPED_ROLES) or
               (role == 'table cell' and self.perk.isLayoutTable(por, role))):
+        self.inhibitMayStop()
         self.sayRole(text=outtext)
         # only store new last role if we actually announce it
         self.setPerkVar("BasicSpeechPerk", "last_role", outtext)
