Index: src/orca/settings.py
===================================================================
--- src/orca/settings.py	(revision 3966)
+++ src/orca/settings.py	(working copy)
@@ -93,6 +93,7 @@
     "speechServerInfo",
     "voices",
     "speechVerbosityLevel",
+    "speakSpeechContext",
     "readTableCellRow",
     "enableSpeechIndentation",
     "enableEchoByWord",
@@ -219,6 +220,10 @@
 speechVerbosityLevel    = VERBOSITY_LEVEL_VERBOSE
 brailleVerbosityLevel   = VERBOSITY_LEVEL_VERBOSE
 
+# If True, speak the context of the currently focused object.
+#
+speakSpeechContext = True
+
 BRAILLE_ROLENAME_STYLE_SHORT = 0 # three letter abbreviations
 BRAILLE_ROLENAME_STYLE_LONG  = 1 # full rolename
 brailleRolenameStyle    = BRAILLE_ROLENAME_STYLE_LONG
Index: src/orca/orca-setup.glade
===================================================================
--- src/orca/orca-setup.glade	(revision 3966)
+++ src/orca/orca-setup.glade	(working copy)
@@ -901,6 +901,26 @@
 						  <property name="fill">False</property>
 						</packing>
 					      </child>
+
+					      <child>
+						<widget class="GtkCheckButton" id="speechContextCheckbutton">
+						  <property name="visible">True</property>
+						  <property name="can_focus">True</property>
+						  <property name="label" translatable="yes">Speak conte_xt</property>
+						  <property name="use_underline">True</property>
+						  <property name="relief">GTK_RELIEF_NORMAL</property>
+						  <property name="focus_on_click">True</property>
+						  <property name="active">False</property>
+						  <property name="inconsistent">False</property>
+						  <property name="draw_indicator">True</property>
+						  <signal name="toggled" handler="speechContextChecked" last_modification_time="Sat, 07 Jun 2008 22:52:34 GMT"/>
+						</widget>
+						<packing>
+						  <property name="padding">5</property>
+						  <property name="expand">False</property>
+						  <property name="fill">False</property>
+						</packing>
+					      </child>
 					    </widget>
 					  </child>
 					</widget>
@@ -1292,8 +1312,8 @@
 				  <property name="wrap">False</property>
 				  <property name="adjustment">10 1 9999 1 10 10</property>
 				  <accessibility>
+				    <atkrelation target="speakProgressBarUnitsLabel" type="labelled-by"/>
 				    <atkrelation target="speakProgressBarLabel" type="labelled-by"/>
-				    <atkrelation target="speakProgressBarUnitsLabel" type="labelled-by"/>
 				  </accessibility>
 				  <signal name="value_changed" handler="speakProgressBarValueChanged" last_modification_time="Thu, 14 Jun 2007 15:09:00 GMT"/>
 				</widget>
@@ -3701,8 +3721,8 @@
 							  <property name="wrap">False</property>
 							  <property name="adjustment">1 24 256 1 10 10</property>
 							  <accessibility>
+							    <atkrelation target="magCursorSizeLabel" type="labelled-by"/>
 							    <atkrelation target="magCursorSizeUnitsLabel" type="labelled-by"/>
-							    <atkrelation target="magCursorSizeLabel" type="labelled-by"/>
 							  </accessibility>
 							  <signal name="value_changed" handler="magCursorSizeValueChanged" last_modification_time="Wed, 03 May 2006 15:31:48 GMT"/>
 							</widget>
@@ -4054,8 +4074,8 @@
 							  <property name="wrap">False</property>
 							  <property name="adjustment">1 1 256 1 10 10</property>
 							  <accessibility>
+							    <atkrelation target="magCrossHairSizeLabel" type="labelled-by"/>
 							    <atkrelation target="magCrossHairSizeUnitsLabel" type="labelled-by"/>
-							    <atkrelation target="magCrossHairSizeLabel" type="labelled-by"/>
 							  </accessibility>
 							  <signal name="value_changed" handler="magCrossHairSizeValueChanged" last_modification_time="Wed, 03 May 2006 15:39:23 GMT"/>
 							</widget>
@@ -4492,8 +4512,8 @@
 						  <property name="wrap">False</property>
 						  <property name="adjustment">0 0 100 1 10 10</property>
 						  <accessibility>
+						    <atkrelation target="magEdgeMarginUnitsLabel" type="labelled-by"/>
 						    <atkrelation target="magEdgeMarginLabel" type="labelled-by"/>
-						    <atkrelation target="magEdgeMarginUnitsLabel" type="labelled-by"/>
 						  </accessibility>
 						  <signal name="value_changed" handler="magEdgeMarginValueChanged" last_modification_time="Thu, 06 Dec 2007 22:57:50 GMT"/>
 						</widget>
Index: src/orca/speechgenerator.py
===================================================================
--- src/orca/speechgenerator.py	(revision 3966)
+++ src/orca/speechgenerator.py	(working copy)
@@ -1768,6 +1768,9 @@
 
         utterances = []
 
+        if not settings.speakSpeechContext:
+            return utterances
+
         if not obj:
             return utterances
 
Index: src/orca/orca_gui_prefs.py
===================================================================
--- src/orca/orca_gui_prefs.py	(revision 3966)
+++ src/orca/orca_gui_prefs.py	(working copy)
@@ -1434,6 +1434,9 @@
         else:
             self.get_widget("speechVerboseButton").set_active(True)
 
+        value = prefs["speakSpeechContext"]
+        self.get_widget("speechContextCheckbutton").set_active(value)
+
         if prefs["readTableCellRow"]:
             self.get_widget("rowSpeechButton").set_active(True)
         else:
@@ -2728,6 +2731,19 @@
                 self.prefsDict["speechVerbosityLevel"] = \
                     settings.VERBOSITY_LEVEL_VERBOSE
 
+    def speechContextChecked(self, widget):
+        """Signal handler for the "toggled" signal for the
+           speechContextCheckbutton GtkCheckButton widget.
+           The user has [un]checked the "Speak context" checkbox.
+           Set the 'speakSpeechContext' preference to the new value.
+
+        Arguments:
+        - widget: the component that generated the signal.
+        """
+
+        value = widget.get_active()
+        self.prefsDict["speakSpeechContext"] = value
+
     def tableSpeechChanged(self, widget):
         """Signal handler for the "toggled" signal for the cellSpeechButton,
            or rowSpeechButton GtkRadioButton widgets. The user has
