Index: src/orca/scripts/StarOffice.py
===================================================================
--- src/orca/scripts/StarOffice.py	(revision 3578)
+++ src/orca/scripts/StarOffice.py	(working copy)
@@ -2379,8 +2379,23 @@
         if event.type.startswith("object:state-changed:focused") and \
            event.source.getRole() == pyatspi.ROLE_PARAGRAPH and \
            event.source != self.currentParagraph:
+            # Handle the case where we are tabbing around in the 
+            # Headers/Footers dialog for a spreadsheet.  In these
+            # cases, we don't always get the events we need, so we
+            # want to make sure we propagate the locus of focus change.
+            # See bug #515923.
+            #
+            rolesList = [pyatspi.ROLE_PARAGRAPH, \
+                         pyatspi.ROLE_PANEL, \
+                         pyatspi.ROLE_PANEL, \
+                         pyatspi.ROLE_PAGE_TAB, \
+                         pyatspi.ROLE_PAGE_TAB_LIST, \
+                         pyatspi.ROLE_OPTION_PANE, \
+                         pyatspi.ROLE_DIALOG, \
+                         pyatspi.ROLE_APPLICATION]
+            propagate = self.isDesiredFocusedItem(event.source, rolesList)
             self.currentParagraph = event.source
-            orca.setLocusOfFocus(event, event.source, False)
+            orca.setLocusOfFocus(event, event.source, propagate)
             return
 
         # If we are in the sbase Table Wizard, try to reduce the numerous
