Index: src/orca/default.py
===================================================================
RCS file: /cvs/gnome/orca/src/orca/default.py,v
retrieving revision 1.169
diff -u -r1.169 default.py
--- src/orca/default.py	28 Jun 2006 14:13:59 -0000	1.169
+++ src/orca/default.py	28 Jun 2006 18:21:36 -0000
@@ -1783,6 +1783,31 @@
         elif event.source.role == rolenames.ROLE_COMBO_BOX:
             orca.visualAppearanceChanged(event, event.source)
 
+        elif event.source.role == rolenames.ROLE_TABLE:
+            # [[[TODO: richb - HACK to deal with the fact that active cells
+            # didn't get focus. The parent did get a "selection-changed"
+            # event though. What it really means is that the selected 
+            # child should have got focus.  Of course, this all breaks 
+            # when more than one child is selected.  Then, we really
+            # need to depend upon the model where focus really works.]]]
+            #
+            if event.source.childCount:
+                # Well...we'll first see if there is a selection.  If there
+                # is, we'll use it.
+                #
+                selection = event.source.selection
+                if selection and selection.nSelectedChildren > 0:
+                    newFocus = atspi.Accessible.makeAccessible(
+                        selection.getSelectedChild(0))
+
+                    if newFocus != orca.locusOfFocus:
+                        # [[[TODO: richb - HACK to force locusOfFocusChanged 
+                        # to braille/speak this table cell (see bug #319675).
+                        # ]]]
+                        #
+                        orca.locusOfFocus = None
+                        orca.setLocusOfFocus(event, newFocus)
+
     def onValueChanged(self, event):
         """Called whenever an object's value changes.  Currently, the
         value changes for non-focused objects are ignored.
