diff --git a/src/orca/formatting.py b/src/orca/formatting.py
index dc6f54f..e647bfd 100644
--- a/src/orca/formatting.py
+++ b/src/orca/formatting.py
@@ -114,11 +114,12 @@ formatting = {
             },
         pyatspi.ROLE_CHECK_MENU_ITEM: {
             'focused': 'checkedState',
-            'unfocused': 'labelAndName + roleName + checkedState + required + availability + ' + MNEMONIC + ' + accelerator',
+            'unfocused': 'labelAndName + roleName + checkedState + required + availability + ' + MNEMONIC + ' + accelerator +positionInList',
             'basicWhereAmI': 'ancestors + labelAndName + roleName + checkedState + accelerator + positionInList + ' + MNEMONIC
             },
         pyatspi.ROLE_COMBO_BOX: {
-            'focused': 'name',
+            'focused': 'name + positionInList',
+            'unfocused': 'label + name + roleName + pause + positionInList + ' + MNEMONIC + ' + accelerator',            
             'basicWhereAmI': 'label + roleName + name + positionInList + ' + MNEMONIC + ' + accelerator'
             },
         pyatspi.ROLE_DIALOG: {
@@ -147,8 +148,8 @@ formatting = {
             'detailedWhereAmI': 'label + readOnly + textRole + textContentWithAttributes + anyTextSelection + ' + MNEMONIC + ' + ' + TUTORIAL
             },
         pyatspi.ROLE_ICON: {
-            'focused': 'labelAndName + imageDescription + roleName',
-            'unfocused': 'labelAndName + imageDescription + roleName',
+            'focused': 'labelAndName + imageDescription + roleName + positionInList',
+            'unfocused': 'labelAndName + imageDescription + roleName + positionInList',
             'basicWhereAmI': 'parentRoleName + labelAndName + selectedItemCount',
             'detailedWhereAmI': 'parentRoleName + labelAndName + selectedItemCount + selectedItems'
             },
@@ -167,20 +168,22 @@ formatting = {
             },
         pyatspi.ROLE_LIST_ITEM: {
             'focused': 'expandableState + availability',
-            'unfocused': 'labelAndName + allTextSelection + expandableState + availability',
+            'unfocused': 'labelAndName + allTextSelection + expandableState + availability + positionInList',
             'basicWhereAmI': 'label + roleName + name + positionInList + expandableState + (nodeLevel or nestingLevel)'
             },
         pyatspi.ROLE_MENU: {
             'focused': '[]',
-            'unfocused': 'labelAndName + allTextSelection + roleName + availability + ' + MNEMONIC + ' + accelerator',
+            'unfocused': 'labelAndName + allTextSelection + roleName + availability + ' + MNEMONIC + ' + accelerator + positionInList',
             'basicWhereAmI': '(ancestors or parentRoleName) + labelAndName + roleName +  positionInList + ' + MNEMONIC
             },
         pyatspi.ROLE_MENU_ITEM: {
             'focused': '[]',
-            'unfocused': 'labelAndName + menuItemCheckedState + availability + ' + MNEMONIC + ' + accelerator',
+            'unfocused': 'labelAndName + menuItemCheckedState + availability + ' + MNEMONIC + ' + accelerator + positionInList',
             'basicWhereAmI': 'ancestors + labelAndName + accelerator + positionInList + ' + MNEMONIC
             },
         pyatspi.ROLE_PAGE_TAB: {
+            'focused': 'labelAndName + roleName + positionInList + ' + MNEMONIC + ' + accelerator',
+            'unfocused': 'labelAndName + roleName + positionInList + ' + MNEMONIC + ' + accelerator',
             'basicWhereAmI': 'parentRoleName + labelAndName + roleName + positionInList + ' + MNEMONIC + ' + accelerator'
             },
         pyatspi.ROLE_PARAGRAPH: {
@@ -205,7 +208,7 @@ formatting = {
             },
         pyatspi.ROLE_RADIO_BUTTON: {
             'focused': 'radioState',
-            'unfocused': 'labelAndName + radioState + roleName + availability + ' + MNEMONIC + ' + accelerator',
+            'unfocused': 'labelAndName + radioState + roleName + availability + ' + MNEMONIC + ' + accelerator + positionInList',
             'basicWhereAmI': 'radioButtonGroup + labelAndName + roleName + radioState + positionInGroup + ' + MNEMONIC + ' + accelerator'
             },
         pyatspi.ROLE_RADIO_MENU_ITEM: {
@@ -216,8 +219,8 @@ formatting = {
             # menu item" that is currently unchecked and speak that state.
             # See Orca bug #433398 for more details.
             #
-            'focused': 'labelAndName + radioState + roleName + availability',
-            'unfocused': 'labelAndName + radioState + roleName + availability + ' + MNEMONIC + ' + accelerator',
+            'focused': 'labelAndName + radioState + roleName + availability + positionInList',
+            'unfocused': 'labelAndName + radioState + roleName + availability + ' + MNEMONIC + ' + accelerator + positionInList',
             'basicWhereAmI': 'ancestors + labelAndName + roleName + radioState + accelerator + positionInList + ' + MNEMONIC
             },
         pyatspi.ROLE_SECTION: {
@@ -514,14 +517,20 @@ formatting = {
 
 if settings.useExperimentalSpeechProsody:
     print "Adding pauses to default speech formatting strings."
+    formatting['speech'][pyatspi.ROLE_CHECK_MENU_ITEM]['unfocused'] = \
+        'labelAndName + roleName + checkedState + required + availability + ' + MNEMONIC + ' + accelerator + pause + positionInList'
     formatting['speech'][pyatspi.ROLE_CHECK_MENU_ITEM]['basicWhereAmI'] = \
         'ancestors + pause + labelAndName + roleName + checkedState + pause + accelerator + pause + positionInList + ' + MNEMONIC
+    formatting['speech'][pyatspi.ROLE_COMBO_BOX]['focused'] ='name + pause + positionInList + pause'
+    formatting['speech'][pyatspi.ROLE_COMBO_BOX]['unfocused'] = 'label + name + roleName + pause + positionInList + ' + MNEMONIC + ' + accelerator'
     formatting['speech'][pyatspi.ROLE_COMBO_BOX]['basicWhereAmI'] = \
         'label + roleName + pause + name + positionInList + ' + MNEMONIC + ' + accelerator'
     formatting['speech'][pyatspi.ROLE_HEADING]['basicWhereAmI'] = \
         'label + readOnly + textRole + pause + textContent + anyTextSelection + ' + MNEMONIC
     formatting['speech'][pyatspi.ROLE_HEADING]['detailedWhereAmI'] = \
         'label + readOnly + textRole + pause +textContentWithAttributes + anyTextSelection + ' + MNEMONIC + ' + ' + TUTORIAL
+    formatting['speech'][pyatspi.ROLE_ICON]['focused'] = 'labelAndName + imageDescription + roleName + pause + positionInList'
+    formatting['speech'][pyatspi.ROLE_ICON]['unfocused'] = 'labelAndName + imageDescription + roleName + pause + positionInList'
     formatting['speech'][pyatspi.ROLE_ICON]['basicWhereAmI'] = \
         'parentRoleName + pause + labelAndName + pause + selectedItemCount + pause'
     formatting['speech'][pyatspi.ROLE_ICON]['detailedWhereAmI'] = \
@@ -533,17 +542,21 @@ if settings.useExperimentalSpeechProsody:
     formatting['speech'][pyatspi.ROLE_LINK]['basicWhereAmI'] = \
         'linkInfo + pause + siteDescription + pause + fileSize'
     formatting['speech'][pyatspi.ROLE_LIST_ITEM]['unfocused'] = \
-        'labelAndName + allTextSelection + pause + expandableState + pause + availability'
+        'labelAndName + allTextSelection + pause + expandableState + pause + availability + positionInList'
     formatting['speech'][pyatspi.ROLE_LIST_ITEM]['basicWhereAmI'] = \
         'label + roleName + pause + name + pause + positionInList + pause + expandableState + (nodeLevel or nestingLevel) + pause'
+    formatting['speech'][pyatspi.ROLE_MENU]['unfocused'] ='labelAndName + allTextSelection + roleName + availability + ' + MNEMONIC + ' + accelerator + pause + positionInList'
     formatting['speech'][pyatspi.ROLE_MENU]['basicWhereAmI'] = \
         '(ancestors or parentRoleName) + pause + labelAndName + roleName + pause +  positionInList + ' + MNEMONIC
+    formatting['speech'][pyatspi.ROLE_MENU_ITEM]['unfocused'] = 'labelAndName + menuItemCheckedState + availability + ' + MNEMONIC + ' + accelerator + pause + positionInList'
     formatting['speech'][pyatspi.ROLE_MENU_ITEM]['basicWhereAmI'] = \
         'ancestors + pause + labelAndName + pause + accelerator + pause + positionInList + ' + MNEMONIC
+    formatting['speech'][pyatspi.ROLE_PAGE_TAB]['focused'] = 'labelAndName + roleName + pause + positionInList + ' + MNEMONIC + ' + accelerator'
+    formatting['speech'][pyatspi.ROLE_PAGE_TAB]['unfocused'] = 'labelAndName + roleName + pause + positionInList + ' + MNEMONIC + ' + accelerator'
     formatting['speech'][pyatspi.ROLE_PAGE_TAB]['basicWhereAmI'] = \
         'parentRoleName + pause + labelAndName + roleName + pause + positionInList + ' + MNEMONIC + ' + accelerator'
     formatting['speech'][pyatspi.ROLE_RADIO_BUTTON]['unfocused'] = \
-        'labelAndName + pause + radioState + roleName + availability + lineBreak + ' + MNEMONIC + ' + accelerator + pause'
+        'labelAndName + pause + radioState + roleName + availability + lineBreak + ' + MNEMONIC + ' + accelerator + pause + positionInList + pause'
     formatting['speech'][pyatspi.ROLE_RADIO_BUTTON]['basicWhereAmI'] = \
         'radioButtonGroup + pause + labelAndName + roleName + pause + radioState + pause + positionInGroup + ' + MNEMONIC + ' + accelerator'
     formatting['speech'][pyatspi.ROLE_TABLE]['focused'] = \
diff --git a/src/orca/orca-setup.ui b/src/orca/orca-setup.ui
index 4345764..28cc5ea 100644
--- a/src/orca/orca-setup.ui
+++ b/src/orca/orca-setup.ui
@@ -1592,6 +1592,26 @@
                               </packing>
                             </child>
                             <child>
+                              <object class="GtkCheckButton" id="speakPositionIndexCheckButton">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property comments="Translators: This checkbox toggle Orca says position index automaticaly or not (list views, combo boxes, radio buttons etc). The first number means what the actual item number, the second number means how many total item number have the object." name="label" translatable="yes"> Speak p_osition indexes</property>
+                                <property name="use_underline">True</property>
+                                <property name="relief">GTK_RELIEF_NORMAL</property>
+                                <property name="focus_on_click">True</property>
+                                <property name="active">True</property>
+                                <property name="inconsistent">False</property>
+                                <property name="draw_indicator">True</property>
+                                <signal handler="speakPositionIndexToggled" last_modification_time="Mon, 27 Jul 2009 09:34:04 GMT" name="toggled"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="right_attach">1</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                              </packing>
+                            </child>
+                            <child>
                               <object class="GtkCheckButton" id="speakMnemonicsCheckButton">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
diff --git a/src/orca/orca_gui_prefs.py b/src/orca/orca_gui_prefs.py
index 6b6b405..5991cf9 100644
--- a/src/orca/orca_gui_prefs.py
+++ b/src/orca/orca_gui_prefs.py
@@ -1518,6 +1518,9 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         self.get_widget("pauseBreaksCheckButton").set_active(\
             prefs["enablePauseBreaks"])
 
+        self.get_widget("speakPositionIndexCheckButton").set_active(\
+            prefs["enablePositionindexSpeaking"])
+
         self.get_widget("speakMnemonicsCheckButton").set_active(\
             prefs["enableMnemonicSpeaking"])
 
@@ -2574,6 +2577,17 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         self.prefsDict["enablePauseBreaks"] = widget.get_active()
 
+    def speakPositionIndexToggled(self, widget):
+        """Signal handler for the "toggled" signal for the
+           speakPositionIndexCheckButton GtkCheckButton widget.
+           Set the 'enablePositionindexSpeaking' preference to the new value.
+
+        Arguments:
+        - widget: the component that generated the signal.
+        """
+
+        self.prefsDict["enablePositionindexSpeaking"] = widget.get_active()
+
     def mnemonicSpeakingChecked (self, widget):
         """Signal handler for the "toggled" signal for the
            speakMnemonicsCheckButton GtkCheckButton widget.
diff --git a/src/orca/settings.py b/src/orca/settings.py
index 8738228..d3478f5 100644
--- a/src/orca/settings.py
+++ b/src/orca/settings.py
@@ -107,6 +107,7 @@ userCustomizableSettings = [
     "enablePauseBreaks",
     "enableTutorialMessages",
     "enableMnemonicSpeaking",
+    "enablePositionindexSpeaking",
     "enableBraille",
     "enableBrailleContext",
     "enableBrailleGrouping",
@@ -582,6 +583,10 @@ enableTutorialMessages = False
 #
 enableMnemonicSpeaking = False
 
+# If true, position indexes  will be spoken automaticaly
+#
+enablePositionindexSpeaking = True
+
 # If True, show the main Orca window.
 #
 showMainWindow          = True
diff --git a/src/orca/speech_generator.py b/src/orca/speech_generator.py
index f49394c..f255f08 100644
--- a/src/orca/speech_generator.py
+++ b/src/orca/speech_generator.py
@@ -1305,10 +1305,11 @@ class SpeechGenerator(generator.Generator):
                 if next == name:
                     position = index
 
-        if position >= 0:
-            # Translators: this is an item in a list.
-            #
-            result.append(_("item %(index)d of %(total)d") \
+        if settings.enablePositionindexSpeaking or args.get('forceList', False):
+            if position >= 0:
+                # Translators: this is an item in a list.
+                #
+                result.append(_("%(index)d of %(total)d") \
                           % {"index" : position,
                              "total" : total})
 
diff --git a/src/orca/where_am_I.py b/src/orca/where_am_I.py
index 0694752..66b2b43 100644
--- a/src/orca/where_am_I.py
+++ b/src/orca/where_am_I.py
@@ -102,4 +102,5 @@ class WhereAmI:
                    alreadyFocused=True,
                    formatType=formatType,
                    forceMnemonic=True,
+                   forceList=True,
                    forceTutorial=True)
