Index: src/orca/where_am_I.py
===================================================================
--- src/orca/where_am_I.py	(revision 2360)
+++ src/orca/where_am_I.py	(working copy)
@@ -126,6 +126,9 @@
         elif role == rolenames.ROLE_PARAGRAPH:
             self._speakParagraph(obj, doubleClick)
 
+        elif role == rolenames.ROLE_ICON:
+            self._speakIconPanel(obj, doubleClick)
+
         else:
             self._speakGenericObject(obj, doubleClick)
 
@@ -571,6 +574,55 @@
 
         self._speakText(obj, doubleClick)
 
+    def _speakIconPanel(self, obj, doubleClick):
+        """Speak the contents of the pane containing this icon. The
+        number of icons in the pane is spoken. Plus the total number of
+        selected icons. Plus the name of each of the selected icons.
+
+        Arguments:
+        - obj: the icon object that currently has focus.
+        """
+
+        utterances = []
+        panel = obj.parent
+        childCount = panel.childCount
+
+        # Translators: the indicates a panel containing icons such as a
+        # Nautilus folder view, plus a count of the number of icons within
+        # that panel.
+        #
+        utterances.append(_("Icon panel. %d items") % childCount)
+
+        utterances.append(self._getObjLabelAndName(obj))
+
+        selectedItems = []
+        totalSelectedItems = 0
+        for i in range(0, childCount):
+            child = panel.child(i)
+            if child.state.count(atspi.Accessibility.STATE_SELECTED):
+                totalSelectedItems += 1
+                selectedItems.append(child)
+
+        # If there is only one item selected and this is the same as the
+        # focused object, just speak "selected", otherwise give the count
+        # of selected items and then the name of each of them.
+        #
+        if totalSelectedItems == 1 and selectedItems[0] == obj:
+            # Translators: this is to indicate that an icon in the panel
+            # is in a selected state.
+            #
+            utterances.append(_("selected"))
+        else:
+            # Translators: this is a count of the number of selected icons
+            # within the icon panel.
+            #
+            utterances.append(_("%d selected") % totalSelectedItems)
+
+            for i in range(0, len(selectedItems)):
+                utterances.append(self._getObjLabelAndName(selectedItems[i]))
+
+        speech.speakUtterances(utterances)
+
     def _speakGenericObject(self, obj, doubleClick):
         """Speak a generic object; one not specifically handled by
         other methods.
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 2360)
+++ ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+2007-05-08  Rich Burridge <rich.burridge@sun.com>
+
+        * src/orca/where_am_I.py:
+          Fixed bug #435223 – Where-am-I doesn't correctly identify 
+          multiple selected objects in Nautilus.
+
 2007-05-08  Willie Walker <william.walker@sun.com>
 
         * src/orca/scripts/gnome-panel.py, src/orca/rolenames.py,
