Index: src/orca/scripts/Evolution.py
===================================================================
--- src/orca/scripts/Evolution.py	(revision 3469)
+++ src/orca/scripts/Evolution.py	(working copy)
@@ -421,6 +421,8 @@
 
         listeners["object:state-changed:showing"]           = \
             self.onStateChanged
+        listeners["object:visible-data-changed"] = \
+            self.onVisibleDataChanged
 
         return listeners
 
@@ -1649,6 +1651,32 @@
             return False
 
 
+    def onVisibleDataChanged(self, event):
+        """Called whenever the visible data for an object changes.
+
+        Arguments:
+        - event: the Event
+        """
+
+        # We are trying to detect if the status of an entry in the mail
+        # message header list has gone from unread to read. We'll get a
+        # couple of "object:visible-data-changed" events when this happens;
+        # one for the main frame and another for the folder tree table on
+        # the left. The updated data will show the new unread count.
+        #
+        # So... If the event is for the tree table on the left and the
+        # current locus is in a table cell in the mail message header list,
+        # then update the braille display.
+        #
+        if event.source.getRole() == pyatspi.ROLE_TREE_TABLE:
+            rolesList = [pyatspi.ROLE_TABLE_CELL, \
+                         pyatspi.ROLE_TREE_TABLE, \
+                         pyatspi.ROLE_UNKNOWN, \
+                         pyatspi.ROLE_SCROLL_PANE]
+            if self.isDesiredFocusedItem(orca_state.locusOfFocus,
+                                         self.rolesList):
+                self.updateBraille(orca_state.locusOfFocus)
+
     def onStateChanged(self, event):
         """Called whenever an object's state changes.  We are only
         interested in "object:state-changed:showing" events for any
