Index: test/keystrokes/gtk-demo/role_text_multiline.py
===================================================================
--- test/keystrokes/gtk-demo/role_text_multiline.py	(revision 3313)
+++ test/keystrokes/gtk-demo/role_text_multiline.py	(working copy)
@@ -263,32 +263,73 @@
     ["BRAILLE LINE:  ' $l'",
      "     VISIBLE:  ' $l', cursor=1",
      "BRAILLE LINE:  'I'm just typing away like a mad little monkey with nothing better to do in my life than eat fruit and type. $l'",
-     "     VISIBLE:  'I'm just typing away like a mad ', cursor=12",
+     "     VISIBLE:  'I'm just typing away like a mad ', cursor=11",
      "BRAILLE LINE:  'I'm just typing away like a mad little monkey with nothing better to do in my life than eat fruit and type. $l'",
      "     VISIBLE:  'y life than eat fruit and type. ', cursor=32",
      "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'I'm just typing away like a mad little monkey with nothing better to do in my life than eat fruit and type.'",
-     "SPEECH OUTPUT: 'ping away like a mad little monkey with nothing better to do in my life than eat fruit and type.'",
+     "SPEECH OUTPUT: 'yping away like a mad little monkey with nothing better to do in my life than eat fruit and type.'",
      "SPEECH OUTPUT: 'selected'"]))
 
 ########################################################################
-# Right arrow to the beginning of the next line.
+# Shift Right arrow twice to select the first two words on the next
+# line.
 #
-sequence.append(utils.StartRecordingAction())
-sequence.append(KeyComboAction("Right", 500))
+sequence.append(KeyComboAction("<Shift><Control>Right", 500))
 sequence.append(WaitAction("object:text-caret-moved",
                            None,
                            None,
                            pyatspi.ROLE_TEXT,
                            5000))
+sequence.append(KeyComboAction("<Shift><Control>Right", 500))
+sequence.append(WaitAction("object:text-caret-moved",
+                           None,
+                           None,
+                           pyatspi.ROLE_TEXT,
+                           5000))
+
+########################################################################
+# Do a basic "Where Am I" via KP_Enter.
+#
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_Enter"))
+sequence.append(PauseAction(3000))
 sequence.append(utils.AssertPresentationAction(
-    "Move to beginning of next line",
+    "Basic Where Am I with selection",
     ["BRAILLE LINE:  'The keyboard sure can get sticky. $l'",
-     "     VISIBLE:  'The keyboard sure can get sticky', cursor=1",
-     "SPEECH OUTPUT: 'newline'",
-     "SPEECH OUTPUT: 'T'"]))
+     "     VISIBLE:  'The keyboard sure can get sticky', cursor=13",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'The keyboard'",
+     "SPEECH OUTPUT: 'selected'",
+     "SPEECH OUTPUT: ''"]))
 
 ########################################################################
+# Do a detailed "Where Am I" via KP_Enter 2x.
+#
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_Enter"))
+sequence.append(KeyComboAction("KP_Enter"))
+sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Detailed Where Am I with selection",
+    ["BRAILLE LINE:  'The keyboard sure can get sticky. $l'",
+     "     VISIBLE:  'The keyboard sure can get sticky', cursor=13",
+     "BRAILLE LINE:  'The keyboard sure can get sticky. $l'",
+     "     VISIBLE:  'The keyboard sure can get sticky', cursor=13",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'The keyboard'",
+     "SPEECH OUTPUT: 'selected'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'yping away like a mad little monkey with nothing better to do in my life than eat fruit and type.",
+     "The keyboard'",
+     "SPEECH OUTPUT: 'selected'",
+     "SPEECH OUTPUT: ''"]))
+
+########################################################################
 # Try a "SayAll".
 #
 sequence.append(utils.StartRecordingAction())
Index: src/orca/where_am_I.py
===================================================================
--- src/orca/where_am_I.py	(revision 3313)
+++ src/orca/where_am_I.py	(working copy)
@@ -1179,6 +1179,18 @@
                                 morePossibleSelections = True
                         break
 
+        else:
+            # We're only interested in the text selected on this line.
+            #
+            [line, lineStart, lineEnd] = \
+                   text.getTextAtOffset(text.caretOffset,
+                                        pyatspi.TEXT_BOUNDARY_LINE_START)
+            if lineStart != endOffset:
+                startOffset = max(startOffset, lineStart)
+                endOffset = min(endOffset, lineEnd)
+                textContents = line[startOffset - lineStart:
+                                    endOffset - lineStart]
+
         return [textContents, startOffset, endOffset]
 
     def _hasTextSelections(self, obj):
