Index: src/orca/speechgenerator.py
===================================================================
--- src/orca/speechgenerator.py	(revision 2576)
+++ src/orca/speechgenerator.py	(working copy)
@@ -94,6 +94,8 @@
              self._getSpeechForLayeredPane
         self.speechGenerators[rolenames.ROLE_LIST]                = \
              self._getSpeechForList
+        self.speechGenerators[rolenames.ROLE_LIST_ITEM]           = \
+             self._getSpeechForListItem
         self.speechGenerators[rolenames.ROLE_MENU]                = \
              self._getSpeechForMenu
         self.speechGenerators[rolenames.ROLE_MENU_BAR]            = \
@@ -732,7 +734,25 @@
                              obj,
                              already_focused,
                              utterances)
+        print '_getSpeechForList', utterances
+        return utterances
+    
+    def _getSpeechForListItem(self, obj, already_focused):
+        """Get the speech for a listitem.
 
+        Arguments:
+        - obj: the listitem
+        - already_focused: False if object just received focus
+
+        Returns a list of utterances to be spoken for the object.
+        """
+        
+        utterances = self._getDefaultSpeech(obj, already_focused)
+
+        self._debugGenerator("_getSpeechForListItem",
+                             obj,
+                             already_focused,
+                             utterances)
         return utterances
 
     def _getSpeechForMenu(self, obj, already_focused):
@@ -1200,7 +1220,6 @@
 
         Returns a list of utterances to be spoken for the object.
         """
-
         utterances = self._getDefaultSpeech(obj, already_focused)
 
         self._debugGenerator("_getSpeechForTable",
@@ -1221,7 +1240,7 @@
             # or table.
             #
             utterances.append(_("0 items"))
-
+            
         return utterances
 
     def _getSpeechForTableCell(self, obj, already_focused):
Index: src/orca/default.py
===================================================================
--- src/orca/default.py	(revision 2576)
+++ src/orca/default.py	(working copy)
@@ -2979,7 +2979,21 @@
                 #else:
                 #    orca.setLocusOfFocus(event, None)
                 return
-
+                
+        # Announce tree expanding/collapsing   
+        #     
+        if event.type == "object:state-changed:expanded":
+            if event.detail1:
+                # Translators: This announces when a tree branch has been
+                # expanded.
+                #
+                speech.speak(_('expanded'))
+            else:
+                # Translators: This announces when a tree branch has been
+                # collapsed.
+                #
+                speech.speak(_('collapsed'))
+           
         # Handle tooltip popups.
         #
         if event.source.role == rolenames.ROLE_TOOL_TIP:
