Index: src/orca/default.py
===================================================================
--- src/orca/default.py	(revision 2669)
+++ src/orca/default.py	(working copy)
@@ -5404,13 +5404,13 @@
         action = obj.action
 
         if not action:
-            return ["", ""]
+            bindingStrings = []
+        else:
+            # [[[TODO: WDW - assumes the first keybinding is all that we
+            # care about.  Logged as bugzilla bug 319741.]]]
+            #
+            bindingStrings = action.getKeyBinding(0).split(';')
 
-        # [[[TODO: WDW - assumes the first keybinding is all that we care about.
-        # Logged as bugzilla bug 319741.]]]
-        #
-        bindingStrings = action.getKeyBinding(0).split(';')
-
         # [[[TODO: WDW - assumes menu items have three bindings.  Logged as
         # bugzilla bug 319741.]]]
         #
@@ -5425,6 +5425,24 @@
             fullShortcut   = ""
             accelerator    = ""
 
+        # Combo boxes and sliders do not have their mnemonic associated with
+        # them.  Instead, it is derived from the underlined letter of the
+        # associated label.
+        #
+        if not fullShortcut and obj.role in [rolenames.ROLE_COMBO_BOX,
+                                             rolenames.ROLE_SLIDER]:
+            labels = self.findDisplayedLabel(obj)
+            for label in labels:
+                if label.text:
+                    for i in range(0, label.text.characterCount):
+                        [value, start, end, defined] = \
+                                label.text.getAttributeValue(i, "underline")
+                        if defined:
+                            fullShortcut = "Alt " + label.text.getText(i, i+1)
+                            break
+                if fullShortcut:
+                    break
+
         fullShortcut = fullShortcut.replace("<","")
         fullShortcut = fullShortcut.replace(">"," ")
         fullShortcut = fullShortcut.replace(":"," ")
Index: src/orca/where_am_I.py
===================================================================
--- src/orca/where_am_I.py	(revision 2669)
+++ src/orca/where_am_I.py	(working copy)
@@ -276,17 +276,15 @@
         """
 
         utterances = []
-        text = self._getObjLabelAndName(obj)
+        text = self._getObjLabel(obj)
         utterances.append(text)
 
         text = rolenames.getSpeechForRoleName(obj)
         utterances.append(text)
 
-        value = obj.value
-        if value:
-            text = "%.1f" % value.currentValue
-            utterances.append(text)
-
+        name = self._getObjName(obj)
+        utterances.append(name)
+        
         text = self._getObjMnemonic(obj)
         utterances.append(text)
 
@@ -364,6 +362,9 @@
         text = self._getObjLabelAndName(obj.parent)
         utterances.append(text)
 
+        text = rolenames.getSpeechForRoleName(obj.parent)
+        utterances.append(text)
+
         if doubleClick:
             # parent is the page tab list
             name = self._getObjName(obj)
@@ -373,12 +374,13 @@
         text = self._getObjLabelAndName(obj)
         utterances.append(text)
 
+        if obj.role == rolenames.ROLE_MENU:
+            text = rolenames.getSpeechForRoleName(obj)
+            utterances.append(text)
+
         text = self._getObjAccelerator(obj)
         utterances.append(text)
 
-        text = rolenames.getSpeechForRoleName(obj)
-        utterances.append(text)
-
         if not doubleClick:
             # parent is the page tab list
             name = self._getObjName(obj)
@@ -386,6 +388,14 @@
             utterances.append(text)
 
         text = self._getObjShortcut(obj)
+
+        # The object's shortcut will be the full list of keys (e.g.
+        # Alt FO for the open menu item in the File menu). We only
+        # want to speak the shortcut associated with the menu item.
+        #
+        if obj.parent and obj.parent.role == rolenames.ROLE_MENU:
+            text = text[-1]
+        
         utterances.append(text)
 
         debug.println(self._debugLevel, "menu item utterances=%s" % \
@@ -403,7 +413,7 @@
         """
 
         utterances = []
-        text = rolenames.getSpeechForRoleName(obj)
+        text = rolenames.getSpeechForRoleName(obj.parent)
         utterances.append(text)
 
         if doubleClick:
@@ -416,15 +426,15 @@
             text = self._getPositionInList(obj.parent, name)
             utterances.append(text)
         else:
-            name = self._getObjName(obj)
-            text = self._getPositionInList(obj.parent, name)
-            utterances.append(text)
-
             # Translators: "page" is the word for a page tab in a tab list.
             #
             text = _("%s page") % self._getObjLabelAndName(obj)
             utterances.append(text)
 
+            name = self._getObjName(obj)
+            text = self._getPositionInList(obj.parent, name)
+            utterances.append(text)
+
         text = self._getObjMnemonic(obj)
         utterances.append(text)
 
@@ -560,7 +570,7 @@
                 # 'collapsed' means the children are not showing.
                 #
                 text = _("collapsed")
-                utterances.append(text)
+            utterances.append(text)
 
         level = self._script.getNodeLevel(orca_state.locusOfFocus)
         if level >= 0:
@@ -800,7 +810,8 @@
         else:
             parent = obj.parent
             while parent and (parent.parent != parent):
-                if parent.role == rolenames.ROLE_PANEL:
+                if parent.role in [rolenames.ROLE_PANEL,
+                                   rolenames.ROLE_FILLER]:
                     label = self._getObjLabelAndName(parent)
                     if label and label != "":
                         text = label
@@ -849,7 +860,9 @@
 
         for i in range(0, obj.childCount):
             next = self._getObjName(obj.child(i))
-            if next == "" or next == "Empty" or next == "separator":
+            if next in ["", "Empty", "separator"] \
+               or not obj.child(i).state.count( \
+                atspi.Accessibility.STATE_SHOWING):
                 continue
 
             index += 1
