[orca] More work on flat review performance and accuracy



commit 40bc21aa3bd0a5c2efa5d9b091197eaf884ea582
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Tue Aug 23 20:11:15 2016 -0400

    More work on flat review performance and accuracy
    
    * Improve performance of clustering zones into lines
    * Eliminate some objects which are not showing and which expose no
      accessible content regardless
    * Place things which are visually on different lines in different lines
      in the flat review context

 src/orca/flat_review.py                            |  112 ++++++++------------
 src/orca/script_utilities.py                       |   17 +++-
 .../gnome-clocks/stop_watch_flat_review.py         |   28 +++---
 test/keystrokes/gnome-terminal/ls_flat_review.py   |   18 +++-
 .../gnome-terminal/man_page_flat_review.py         |   75 +++++++++-----
 test/keystrokes/gtk-demo/role_icon_flat_review.py  |   38 ++++---
 test/keystrokes/gtk-demo/role_menu_flat_review.py  |   18 ++--
 .../gtk-demo/role_text_multiline_flat_review.py    |   10 +-
 .../gtk3-demo/role_dialog_flat_review.py           |   32 +++---
 test/keystrokes/gtk3-demo/role_icon_flat_review.py |   44 +++++---
 .../keystrokes/gtk3-demo/role_table_flat_review.py |  104 +++++++------------
 .../gtk3-demo/role_text_multiline_flat_review.py   |   67 +++++-------
 12 files changed, 275 insertions(+), 288 deletions(-)
---
diff --git a/src/orca/flat_review.py b/src/orca/flat_review.py
index 2b3a5c1..5c782f3 100644
--- a/src/orca/flat_review.py
+++ b/src/orca/flat_review.py
@@ -207,9 +207,32 @@ class Zone:
         else:
             return self.__dict__[attr]
 
+    def _extentsAreOnSameLine(self, zone, pixelDelta=5):
+        """Returns True if this Zone is physically on the same line as zone."""
+
+        if self.width == 0 and self.height == 0:
+            return zone.y <= self.y <= zone.y + zone.height
+
+        if zone.width == 0 and self.height == 0:
+            return self.y <= zone.y <= self.y + self.height
+
+        highestBottom = min(self.y + self.height, zone.y + zone.height)
+        lowestTop = max(self.y, zone.y)
+        if lowestTop >= highestBottom:
+            return False
+
+        middle = self.y + self.height / 2
+        zoneMiddle = zone.y + zone.height / 2
+        if abs(middle - zoneMiddle) > pixelDelta:
+            return False
+
+        return True
+
     def onSameLine(self, zone):
-        """Returns True if this Zone is on the same horiztonal line as
-        the given zone."""
+        """Returns True if we treat this Zone and zone as being on one line."""
+
+        if pyatspi.ROLE_SCROLL_BAR in [self.role, zone.role]:
+            return self.accessible == zone.accessible
 
         try:
             thisParentRole = self.accessible.parent.getRole()
@@ -220,18 +243,7 @@ class Zone:
             if pyatspi.ROLE_MENU_BAR in [thisParentRole, zoneParentRole]:
                 return self.accessible.parent == zone.accessible.parent
 
-        highestBottom = min(self.y + self.height, zone.y + zone.height)
-        lowestTop     = max(self.y,               zone.y)
-
-        # If we do overlap, lets see how much.  We'll require a 25% overlap
-        # for now...
-        #
-        if lowestTop < highestBottom:
-            overlapAmount = highestBottom - lowestTop
-            shortestHeight = min(self.height, zone.height)
-            return ((1.0 * overlapAmount) / shortestHeight) > 0.25
-        else:
-            return False
+        return self._extentsAreOnSameLine(zone)
 
     def getWordAtOffset(self, charOffset):
         wordAtOffset = None
@@ -1284,72 +1296,32 @@ class Context:
 
         return zones
 
+
     def clusterZonesByLine(self, zones):
-        """Given a list of interesting accessible objects (the Zones),
-        returns a list of lines in order from the top to bottom, where
-        each line is a list of accessible objects in order from left
-        to right.
-        """
+        """Returns a sorted list of Line clusters containing sorted Zones."""
 
-        if len(zones) == 0:
+        if not zones:
             return []
 
-        # Sort the zones and also find the top most zone - we'll bias
-        # the clustering to the top of the window.  That is, if an
-        # object can be part of multiple clusters, for now it will
-        # become a part of the top most cluster.
-        #
-        numZones = len(zones)
-        for i in range(0, numZones):
-            for j in range(0, numZones - 1 - i):
-                a = zones[j]
-                b = zones[j + 1]
-                if b.y < a.y:
-                    zones[j] = b
-                    zones[j + 1] = a
-
-        # Now we cluster the zones.  We create the clusters on the
-        # fly, adding a zone to an existing cluster only if it's
-        # rectangle horizontally overlaps all other zones in the
-        # cluster.
-        #
         lineClusters = []
-        for clusterCandidate in zones:
-            addedToCluster = False
-            for lineCluster in lineClusters:
-                inCluster = True
-                for zone in lineCluster:
-                    if not zone.onSameLine(clusterCandidate):
-                        inCluster = False
-                        break
-                if inCluster:
-                    # Add to cluster based on the x position.
-                    #
-                    i = 0
-                    while i < len(lineCluster):
-                        zone = lineCluster[i]
-                        if clusterCandidate.x < zone.x:
-                            break
-                        else:
-                            i += 1
-                    lineCluster.insert(i, clusterCandidate)
-                    addedToCluster = True
-                    break
-            if not addedToCluster:
-                lineClusters.append([clusterCandidate])
+        sortedZones = sorted(zones, key=lambda z: z.y)
+        newCluster = [sortedZones.pop(0)]
+        for zone in sortedZones:
+            if zone.onSameLine(newCluster[-1]):
+                newCluster.append(zone)
+            else:
+                lineClusters.append(sorted(newCluster, key=lambda z: z.x))
+                newCluster = [zone]
+
+        if newCluster:
+            lineClusters.append(sorted(newCluster, key=lambda z: z.x))
 
-        # Now, adjust all the indeces.
-        #
         lines = []
-        lineIndex = 0
-        for lineCluster in lineClusters:
+        for lineIndex, lineCluster in enumerate(lineClusters):
             lines.append(Line(lineIndex, lineCluster))
-            zoneIndex = 0
-            for zone in lineCluster:
+            for zoneIndex, zone in enumerate(lineCluster):
                 zone.line = lines[lineIndex]
                 zone.index = zoneIndex
-                zoneIndex += 1
-            lineIndex += 1
 
         return lines
 
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index f69c18d..fe4086c 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -1617,13 +1617,24 @@ class Utilities:
             return False
 
         try:
+            role = obj.getRole()
             state = obj.getState()
+            childCount = obj.childCount
         except:
-            msg = "ERROR: Exception getting state of %s" % obj
+            msg = "ERROR: Exception getting role, state, childCount of %s" % obj
             debug.println(debug.LEVEL_INFO, msg, True)
             return False
-        else:
-            return state.contains(pyatspi.STATE_SHOWING)
+
+        if not state.contains(pyatspi.STATE_SHOWING):
+            return False
+
+        containers = [pyatspi.ROLE_LIST_BOX,
+                      pyatspi.ROLE_PANEL]
+
+        if role in containers and not childCount:
+            return False
+
+        return True
 
     @staticmethod
     def isTableRow(obj):
diff --git a/test/keystrokes/gnome-clocks/stop_watch_flat_review.py 
b/test/keystrokes/gnome-clocks/stop_watch_flat_review.py
index fb34cc5..eec02ff 100644
--- a/test/keystrokes/gnome-clocks/stop_watch_flat_review.py
+++ b/test/keystrokes/gnome-clocks/stop_watch_flat_review.py
@@ -43,10 +43,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "4. Review previous line",
-    ["KNOWN ISSUE: There is no listbox on the screen, and we're not updating the values",
-     "BRAILLE LINE:  '00‎∶00.0 list box $l'",
-     "     VISIBLE:  '00‎∶00.0 list box $l', cursor=1",
-     "SPEECH OUTPUT: '00‎∶00.0 list box'"]))
+    ["KNOWN ISSUE: We're not updating the values",
+     "BRAILLE LINE:  '00‎∶00.0 $l'",
+     "     VISIBLE:  '00‎∶00.0 $l', cursor=1",
+     "SPEECH OUTPUT: '00‎∶00.0'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
@@ -60,10 +60,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "5. Review next line",
-    ["KNOWN ISSUE: There is no listbox on the screen, and we're not updating the values",
-     "BRAILLE LINE:  '00‎∶00.0 list box $l'",
-     "     VISIBLE:  '00‎∶00.0 list box $l', cursor=1",
-     "SPEECH OUTPUT: '00‎∶00.0 list box'"]))
+    ["KNOWN ISSUE: We're not updating the values",
+     "BRAILLE LINE:  '00‎∶00.0 $l'",
+     "     VISIBLE:  '00‎∶00.0 $l', cursor=1",
+     "SPEECH OUTPUT: '00‎∶00.0'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Subtract"))
@@ -86,9 +86,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "7. Review previous line",
-    ["BRAILLE LINE:  '00‎∶11.5 list box $l'",
-     "     VISIBLE:  '00‎∶11.5 list box $l', cursor=1",
-     "SPEECH OUTPUT: '00‎∶11.5 list box'"]))
+    ["BRAILLE LINE:  '00‎∶11.5 $l'",
+     "     VISIBLE:  '00‎∶11.5 $l', cursor=1",
+     "SPEECH OUTPUT: '00‎∶11.5'"]))
 
 sequence.append(PauseAction(3000))
 
@@ -97,9 +97,9 @@ sequence.append(KeyComboAction("KP_8"))
 sequence.append(utils.AssertPresentationAction(
     "8. Review current line",
     ["KNOWN ISSUE: We're not presenting the updated value",
-     "BRAILLE LINE:  '00‎∶11.5 list box $l'",
-     "     VISIBLE:  '00‎∶11.5 list box $l', cursor=1",
-     "SPEECH OUTPUT: '00‎∶11.5 list box'"]))
+     "BRAILLE LINE:  '00‎∶11.5 $l'",
+     "     VISIBLE:  '00‎∶11.5 $l', cursor=1",
+     "SPEECH OUTPUT: '00‎∶11.5'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/gnome-terminal/ls_flat_review.py 
b/test/keystrokes/gnome-terminal/ls_flat_review.py
index 025dafd..5b5c7c6 100644
--- a/test/keystrokes/gnome-terminal/ls_flat_review.py
+++ b/test/keystrokes/gnome-terminal/ls_flat_review.py
@@ -82,15 +82,23 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "8. Review next line",
-    ["BRAILLE LINE:  '$ ls vertical scroll bar 0% $l'",
-     "     VISIBLE:  '$ ls vertical scroll bar 0% $l', cursor=1",
+    ["BRAILLE LINE:  '$ ls $l'",
+     "     VISIBLE:  '$ ls $l', cursor=1",
      "SPEECH OUTPUT: '$ ls",
-     " vertical scroll bar 0 percent.'"]))
+     "'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "9. Review next line",
+    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
+     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_9"))
+sequence.append(utils.AssertPresentationAction(
+    "10. Review next line",
     ["BRAILLE LINE:  'another_test_file_0  another_test_file_4  another_test_file_8 $l'",
      "     VISIBLE:  'another_test_file_0  another_tes', cursor=1",
      "SPEECH OUTPUT: 'another_test_file_0  another_test_file_4  another_test_file_8",
@@ -101,7 +109,7 @@ sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
-    "10. Review last line",
+    "11. Review last line",
     ["KNOWN ISSUE: We're not finding the bottom",
      "BRAILLE LINE:  ' $l'",
      "     VISIBLE:  ' $l', cursor=1",
@@ -110,7 +118,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "11. Review previous line",
+    "12. Review previous line",
     ["KNOWN ISSUE: We're not finding the bottom",
      "BRAILLE LINE:  ' $l'",
      "     VISIBLE:  ' $l', cursor=1",
diff --git a/test/keystrokes/gnome-terminal/man_page_flat_review.py 
b/test/keystrokes/gnome-terminal/man_page_flat_review.py
index 4434a7b..5da5583 100644
--- a/test/keystrokes/gnome-terminal/man_page_flat_review.py
+++ b/test/keystrokes/gnome-terminal/man_page_flat_review.py
@@ -60,15 +60,23 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "6. Review next line",
-    ["BRAILLE LINE:  'orca(1)                     General Commands Manual                    orca(1) 
vertical scroll bar 0% $l'",
+    ["BRAILLE LINE:  'orca(1)                     General Commands Manual                    orca(1) $l'",
      "     VISIBLE:  'orca(1)                     Gene', cursor=1",
      "SPEECH OUTPUT: 'orca(1)                     General Commands Manual                    orca(1)",
-     " vertical scroll bar 0 percent.'"]))
+     "'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "7. Review next line",
+    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
+     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_9"))
+sequence.append(utils.AssertPresentationAction(
+    "8. Review next line",
     ["BRAILLE LINE:  ' $l'",
      "     VISIBLE:  ' $l', cursor=1",
      "SPEECH OUTPUT: 'blank'"]))
@@ -76,7 +84,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
-    "8. Review next line",
+    "9. Review next line",
     ["BRAILLE LINE:  'NAME $l'",
      "     VISIBLE:  'NAME $l', cursor=1",
      "SPEECH OUTPUT: 'NAME",
@@ -85,7 +93,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
-    "9. Review next line",
+    "10. Review next line",
     ["BRAILLE LINE:  '       orca - a scriptable screen reader $l'",
      "     VISIBLE:  '       orca - a scriptable scree', cursor=1",
      "SPEECH OUTPUT: '       orca - a scriptable screen reader",
@@ -94,7 +102,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>f"))
 sequence.append(utils.AssertPresentationAction(
-    "10. Forward one page",
+    "11. Forward one page",
     ["BRAILLE LINE:  ' Manual page orca(1) line 24 (press h for help or q to quit)'",
      "     VISIBLE:  '(press h for help or q to quit)', cursor=32",
      "BRAILLE LINE:  ' Manual page orca(1) line 24 (press h for help or q to quit)'",
@@ -127,7 +135,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_8"))
 sequence.append(utils.AssertPresentationAction(
-    "11. Review current line",
+    "12. Review current line",
     ["KNOWN ISSUE: We currently deliberately exit flat review and return to the bottom of the window",
     "BRAILLE LINE:  ' Manual page orca(1) line 24 (press h for help or q to quit) $l'",
      "     VISIBLE:  '(press h for help or q to quit) ', cursor=32",
@@ -137,7 +145,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "12. Review previous line",
+    "13. Review previous line",
     ["BRAILLE LINE:  '              file with a name of the form 'debug-YYYY-MM-DD-HH:MM:SS.out'  in $l'",
      "     VISIBLE:  '              file with a name o', cursor=1",
      "SPEECH OUTPUT: '              file with a name of the form 'debug-YYYY-MM-DD-HH:MM:SS.out'  in",
@@ -146,7 +154,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "13. Review previous line",
+    "14. Review previous line",
     ["BRAILLE LINE:  '              Enables  debug  output  for orca and sends all debug output to a $l'",
      "     VISIBLE:  '              Enables  debug  ou', cursor=1",
      "SPEECH OUTPUT: '              Enables  debug  output  for orca and sends all debug output to a",
@@ -157,7 +165,7 @@ sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
-    "14. Review first line",
+    "15. Review first line",
     ["BRAILLE LINE:  'File Edit View Search Terminal Help $l'",
      "     VISIBLE:  'File Edit View Search Terminal H', cursor=1",
      "SPEECH OUTPUT: 'File Edit View Search Terminal Help'"]))
@@ -165,16 +173,23 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
-    "15. Review next line",
-    ["BRAILLE LINE:  ' vertical scroll bar 0% $l'",
-     "     VISIBLE:  ' vertical scroll bar 0% $l', cursor=1",
-     "SPEECH OUTPUT: '",
-     " vertical scroll bar 0 percent.'"]))
+    "16. Review next line",
+    ["BRAILLE LINE:  ' $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
-    "16. Review next line",
+    "17. Review next line",
+    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
+     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_9"))
+sequence.append(utils.AssertPresentationAction(
+    "18. Review next line",
     ["BRAILLE LINE:  '       -u, --user-prefs-dir=dirname $l'",
      "     VISIBLE:  '       -u, --user-prefs-dir=dirn', cursor=1",
      "SPEECH OUTPUT: '       -u, --user-prefs-dir=dirname",
@@ -183,7 +198,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>b"))
 sequence.append(utils.AssertPresentationAction(
-    "17. Back one page",
+    "19. Back one page",
     ["BRAILLE LINE:  ' Manual page orca(1) line 1 (press h for help or q to quit)'",
      "     VISIBLE:  '(press h for help or q to quit)', cursor=32",
      "BRAILLE LINE:  ' Manual page orca(1) line 1 (press h for help or q to quit)'",
@@ -218,7 +233,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_8"))
 sequence.append(utils.AssertPresentationAction(
-    "18. Review current line",
+    "20. Review current line",
     ["BRAILLE LINE:  ' Manual page orca(1) line 1 (press h for help or q to quit) $l'",
      "     VISIBLE:  '(press h for help or q to quit) ', cursor=32",
      "SPEECH OUTPUT: ' Manual page orca(1) line 1 (press h for help or q to quit)",
@@ -227,7 +242,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "19. Review previous line",
+    "21. Review previous line",
     ["BRAILLE LINE:  '              When starting orca, initiate the GUI-based configuration. $l'",
      "     VISIBLE:  '              When starting orca', cursor=1",
      "SPEECH OUTPUT: '              When starting orca, initiate the GUI-based configuration.",
@@ -236,7 +251,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "20. Review previous line",
+    "22. Review previous line",
     ["BRAILLE LINE:  '       -s, --setup $l'",
      "     VISIBLE:  '       -s, --setup $l', cursor=1",
      "SPEECH OUTPUT: '       -s, --setup",
@@ -247,7 +262,7 @@ sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
-    "21. Review first line",
+    "23. Review first line",
     ["BRAILLE LINE:  'File Edit View Search Terminal Help $l'",
      "     VISIBLE:  'File Edit View Search Terminal H', cursor=1",
      "SPEECH OUTPUT: 'File Edit View Search Terminal Help'"]))
@@ -255,16 +270,24 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
-    "22. Review next line",
-    ["BRAILLE LINE:  'orca(1)                     General Commands Manual                    orca(1) 
vertical scroll bar 0% $l'",
+    "24. Review next line",
+    ["BRAILLE LINE:  'orca(1)                     General Commands Manual                    orca(1) $l'",
      "     VISIBLE:  'orca(1)                     Gene', cursor=1",
      "SPEECH OUTPUT: 'orca(1)                     General Commands Manual                    orca(1)",
-     " vertical scroll bar 0 percent.'"]))
+     "'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
-    "23. Review next line",
+    "25. Review next line",
+    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
+     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_9"))
+sequence.append(utils.AssertPresentationAction(
+    "26. Review next line",
     ["BRAILLE LINE:  ' $l'",
      "     VISIBLE:  ' $l', cursor=1",
      "SPEECH OUTPUT: 'blank'"]))
@@ -272,7 +295,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
-    "24. Review next line",
+    "27. Review next line",
     ["BRAILLE LINE:  'NAME $l'",
      "     VISIBLE:  'NAME $l', cursor=1",
      "SPEECH OUTPUT: 'NAME",
@@ -281,7 +304,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
-    "25. Review next line",
+    "28. Review next line",
     ["BRAILLE LINE:  '       orca - a scriptable screen reader $l'",
      "     VISIBLE:  '       orca - a scriptable scree', cursor=1",
      "SPEECH OUTPUT: '       orca - a scriptable screen reader",
diff --git a/test/keystrokes/gtk-demo/role_icon_flat_review.py 
b/test/keystrokes/gtk-demo/role_icon_flat_review.py
index 1ab3990..92c4c37 100644
--- a/test/keystrokes/gtk-demo/role_icon_flat_review.py
+++ b/test/keystrokes/gtk-demo/role_icon_flat_review.py
@@ -29,32 +29,32 @@ sequence.append(KeyComboAction("KP_8"))
 sequence.append(utils.AssertPresentationAction(
     "2. Review current line",
     ["KNOWN ISSUE: This and all the subsequent assertions are broken due to flat review bugs",
-     "BRAILLE LINE:  '      vertical scroll bar 0% $l'",
-     "     VISIBLE:  '      vertical scroll bar 0% $l', cursor=1",
-     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+     "BRAILLE LINE:  '      $l'",
+     "     VISIBLE:  '      $l', cursor=1",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_5"))
 sequence.append(utils.AssertPresentationAction(
     "3. Review current word",
-    ["BRAILLE LINE:  '      vertical scroll bar 0% $l'",
-     "     VISIBLE:  '      vertical scroll bar 0% $l', cursor=1",
+    ["BRAILLE LINE:  '      $l'",
+     "     VISIBLE:  '      $l', cursor=1",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(utils.AssertPresentationAction(
     "4. Review next word",
-    ["BRAILLE LINE:  '      vertical scroll bar 0% $l'",
-     "     VISIBLE:  '      vertical scroll bar 0% $l', cursor=2",
+    ["BRAILLE LINE:  '      $l'",
+     "     VISIBLE:  '      $l', cursor=2",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_2"))
 sequence.append(utils.AssertPresentationAction(
     "5. Review current char",
-    ["BRAILLE LINE:  '      vertical scroll bar 0% $l'",
-     "     VISIBLE:  '      vertical scroll bar 0% $l', cursor=2",
+    ["BRAILLE LINE:  '      $l'",
+     "     VISIBLE:  '      $l', cursor=2",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -93,8 +93,8 @@ sequence.append(KeyComboAction("KP_4"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "9. Review item above",
-    ["BRAILLE LINE:  '      vertical scroll bar 0% $l'",
-     "     VISIBLE:  '      vertical scroll bar 0% $l', cursor=2",
+    ["BRAILLE LINE:  '      $l'",
+     "     VISIBLE:  '      $l', cursor=2",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -125,23 +125,25 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "13. Review previous line",
-    ["BRAILLE LINE:  '      vertical scroll bar 0% $l'",
-     "     VISIBLE:  '      vertical scroll bar 0% $l', cursor=1",
-     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+    ["BRAILLE LINE:  '      $l'",
+     "     VISIBLE:  '      $l', cursor=1",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "14. Review previous line",
-    ["BRAILLE LINE:  'Up Home $l'",
-     "     VISIBLE:  'Up Home $l', cursor=1",
-     "SPEECH OUTPUT: 'Up Home'"]))
+    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
+     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "15. Review previous line",
-    [""]))
+    ["BRAILLE LINE:  'Up Home $l'",
+     "     VISIBLE:  'Up Home $l', cursor=1",
+     "SPEECH OUTPUT: 'Up Home'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/gtk-demo/role_menu_flat_review.py 
b/test/keystrokes/gtk-demo/role_menu_flat_review.py
index e212ae3..ea9279b 100644
--- a/test/keystrokes/gtk-demo/role_menu_flat_review.py
+++ b/test/keystrokes/gtk-demo/role_menu_flat_review.py
@@ -42,24 +42,24 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "4. Review next line",
-    ["BRAILLE LINE:  'Open & y toggle button Quit panel GTK! $l'",
-     "     VISIBLE:  'Open & y toggle button Quit pane', cursor=1",
-     "SPEECH OUTPUT: 'Open not pressed toggle button Quit panel GTK!'"]))
+    ["BRAILLE LINE:  'Open & y toggle button Quit GTK! $l'",
+     "     VISIBLE:  'Open & y toggle button Quit GTK!', cursor=1",
+     "SPEECH OUTPUT: 'Open not pressed toggle button Quit GTK!'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_5"))
 sequence.append(utils.AssertPresentationAction(
     "5. Review current word",
-    ["BRAILLE LINE:  'Open & y toggle button Quit panel GTK! $l'",
-     "     VISIBLE:  'Open & y toggle button Quit pane', cursor=1",
+    ["BRAILLE LINE:  'Open & y toggle button Quit GTK! $l'",
+     "     VISIBLE:  'Open & y toggle button Quit GTK!', cursor=1",
      "SPEECH OUTPUT: 'Open'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(utils.AssertPresentationAction(
     "6. Review next word",
-    ["BRAILLE LINE:  'Open & y toggle button Quit panel GTK! $l'",
-     "     VISIBLE:  'Open & y toggle button Quit pane', cursor=6",
+    ["BRAILLE LINE:  'Open & y toggle button Quit GTK! $l'",
+     "     VISIBLE:  'Open & y toggle button Quit GTK!', cursor=6",
      "SPEECH OUTPUT: 'not pressed'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -122,8 +122,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_4"))
 sequence.append(utils.AssertPresentationAction(
     "14. Review previous word",
-    ["BRAILLE LINE:  'Open & y toggle button Quit panel GTK! $l'",
-     "     VISIBLE:  'l GTK! $l', cursor=3",
+    ["BRAILLE LINE:  'Open & y toggle button Quit GTK! $l'",
+     "     VISIBLE:  'Open & y toggle button Quit GTK!', cursor=29",
      "SPEECH OUTPUT: 'GTK!'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/gtk-demo/role_text_multiline_flat_review.py 
b/test/keystrokes/gtk-demo/role_text_multiline_flat_review.py
index 16445f0..7bb978e 100644
--- a/test/keystrokes/gtk-demo/role_text_multiline_flat_review.py
+++ b/test/keystrokes/gtk-demo/role_text_multiline_flat_review.py
@@ -252,9 +252,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "15. KP_7 to flat review toolbar",
-    ["BRAILLE LINE:  'Open & y toggle button Quit panel GTK! $l'",
-     "     VISIBLE:  'Open & y toggle button Quit pane', cursor=1",
-     "SPEECH OUTPUT: 'Open not pressed toggle button Quit panel GTK!'"]))
+    ["BRAILLE LINE:  'Open & y toggle button Quit GTK! $l'",
+     "     VISIBLE:  'Open & y toggle button Quit GTK!', cursor=1",
+     "SPEECH OUTPUT: 'Open not pressed toggle button Quit GTK!'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
@@ -314,8 +314,8 @@ sequence.append(KeyComboAction("KP_6"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "22. Insert+KP_6 to flat review below",
-    ["BRAILLE LINE:  'Open & y toggle button Quit panel GTK! $l'",
-     "     VISIBLE:  'Open & y toggle button Quit pane', cursor=1",
+    ["BRAILLE LINE:  'Open & y toggle button Quit GTK! $l'",
+     "     VISIBLE:  'Open & y toggle button Quit GTK!', cursor=1",
      "SPEECH OUTPUT: 'Open'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/gtk3-demo/role_dialog_flat_review.py 
b/test/keystrokes/gtk3-demo/role_dialog_flat_review.py
index 2c97226..63082e1 100644
--- a/test/keystrokes/gtk3-demo/role_dialog_flat_review.py
+++ b/test/keystrokes/gtk3-demo/role_dialog_flat_review.py
@@ -232,16 +232,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "27. Review next line",
-    ["BRAILLE LINE:  '& y Current Page <x> Collate drawing area $l'",
-     "     VISIBLE:  '& y Current Page <x> Collate dra', cursor=1",
-     "SPEECH OUTPUT: 'not selected Current Page checked Collate drawing area'"]))
+    ["BRAILLE LINE:  '& y Current Page $l'",
+     "     VISIBLE:  '& y Current Page $l', cursor=1",
+     "SPEECH OUTPUT: 'not selected Current Page'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_5"))
 sequence.append(utils.AssertPresentationAction(
     "28. Review current word",
-    ["BRAILLE LINE:  '& y Current Page <x> Collate drawing area $l'",
-     "     VISIBLE:  '& y Current Page <x> Collate dra', cursor=1",
+    ["BRAILLE LINE:  '& y Current Page $l'",
+     "     VISIBLE:  '& y Current Page $l', cursor=1",
      "SPEECH OUTPUT: 'not selected'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -249,33 +249,33 @@ sequence.append(KeyComboAction("KP_6"))
 sequence.append(utils.AssertPresentationAction(
     "29. Review next word",
     ["KNOWN ISSUE: These labels don't implement the text interface so it's a single word",
-     "BRAILLE LINE:  '& y Current Page <x> Collate drawing area $l'",
-     "     VISIBLE:  '& y Current Page <x> Collate dra', cursor=5",
+     "BRAILLE LINE:  '& y Current Page $l'",
+     "     VISIBLE:  '& y Current Page $l', cursor=5",
      "SPEECH OUTPUT: 'Current Page'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(utils.AssertPresentationAction(
     "30. Review next word",
-    ["BRAILLE LINE:  '& y Current Page <x> Collate drawing area $l'",
-     "     VISIBLE:  '& y Current Page <x> Collate dra', cursor=18",
-     "SPEECH OUTPUT: 'checked'"]))
+    ["BRAILLE LINE:  'drawing area $l'",
+     "     VISIBLE:  'drawing area $l', cursor=1",
+     "SPEECH OUTPUT: 'drawing area'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(utils.AssertPresentationAction(
     "31. Review next word",
-    ["BRAILLE LINE:  '& y Current Page <x> Collate drawing area $l'",
-     "     VISIBLE:  '& y Current Page <x> Collate dra', cursor=22",
-     "SPEECH OUTPUT: 'Collate'"]))
+    ["BRAILLE LINE:  '<x> Collate $l'",
+     "     VISIBLE:  '<x> Collate $l', cursor=1",
+     "SPEECH OUTPUT: 'checked'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(utils.AssertPresentationAction(
     "32. Review next word",
-    ["BRAILLE LINE:  '& y Current Page <x> Collate drawing area $l'",
-     "     VISIBLE:  '& y Current Page <x> Collate dra', cursor=30",
-     "SPEECH OUTPUT: 'drawing area'"]))
+    ["BRAILLE LINE:  '<x> Collate $l'",
+     "     VISIBLE:  '<x> Collate $l', cursor=5",
+     "SPEECH OUTPUT: 'Collate'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_6"))
diff --git a/test/keystrokes/gtk3-demo/role_icon_flat_review.py 
b/test/keystrokes/gtk3-demo/role_icon_flat_review.py
index 07ac8ac..953670c 100644
--- a/test/keystrokes/gtk3-demo/role_icon_flat_review.py
+++ b/test/keystrokes/gtk3-demo/role_icon_flat_review.py
@@ -29,32 +29,32 @@ sequence.append(KeyComboAction("KP_8"))
 sequence.append(utils.AssertPresentationAction(
     "2. Review current line",
     ["KNOWN ISSUE: This and all the subsequent assertions are broken due to flat review bugs",
-     "BRAILLE LINE:  '   vertical scroll bar 0% $l'",
-     "     VISIBLE:  '   vertical scroll bar 0% $l', cursor=1",
-     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+     "BRAILLE LINE:  '   $l'",
+     "     VISIBLE:  '   $l', cursor=1",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_5"))
 sequence.append(utils.AssertPresentationAction(
     "3. Review current word",
-    ["BRAILLE LINE:  '   vertical scroll bar 0% $l'",
-     "     VISIBLE:  '   vertical scroll bar 0% $l', cursor=1",
+    ["BRAILLE LINE:  '   $l'",
+     "     VISIBLE:  '   $l', cursor=1",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(utils.AssertPresentationAction(
     "4. Review next word",
-    ["BRAILLE LINE:  '   vertical scroll bar 0% $l'",
-     "     VISIBLE:  '   vertical scroll bar 0% $l', cursor=2",
+    ["BRAILLE LINE:  '   $l'",
+     "     VISIBLE:  '   $l', cursor=2",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_2"))
 sequence.append(utils.AssertPresentationAction(
     "5. Review current char",
-    ["BRAILLE LINE:  '   vertical scroll bar 0% $l'",
-     "     VISIBLE:  '   vertical scroll bar 0% $l', cursor=2",
+    ["BRAILLE LINE:  '   $l'",
+     "     VISIBLE:  '   $l', cursor=2",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -67,14 +67,16 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '   $l', cursor=2",
      "SPEECH OUTPUT: 'blank'"]))
 
+sequence.append(PauseAction(3000))
+
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "7. Review item below",
-    ["BRAILLE LINE:  '  $l'",
-     "     VISIBLE:  '  $l', cursor=2",
+    ["BRAILLE LINE:  '   $l'",
+     "     VISIBLE:  '   $l', cursor=2",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -93,8 +95,8 @@ sequence.append(KeyComboAction("KP_4"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "9. Review item above",
-    ["BRAILLE LINE:  '   vertical scroll bar 0% $l'",
-     "     VISIBLE:  '   vertical scroll bar 0% $l', cursor=2",
+    ["BRAILLE LINE:  '   $l'",
+     "     VISIBLE:  '   $l', cursor=2",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -125,14 +127,22 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "13. Review previous line",
-    ["BRAILLE LINE:  '   vertical scroll bar 0% $l'",
-     "     VISIBLE:  '   vertical scroll bar 0% $l', cursor=1",
-     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+    ["BRAILLE LINE:  '   $l'",
+     "     VISIBLE:  '   $l', cursor=1",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "14. Review previous line",
+    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
+     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_7"))
+sequence.append(utils.AssertPresentationAction(
+    "15. Review previous line",
     ["BRAILLE LINE:  'Up Home $l'",
      "     VISIBLE:  'Up Home $l', cursor=1",
      "SPEECH OUTPUT: 'Up Home'"]))
@@ -140,7 +150,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "15. Review previous line",
+    "16. Review previous line",
     [""]))
 
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/gtk3-demo/role_table_flat_review.py 
b/test/keystrokes/gtk3-demo/role_table_flat_review.py
index 0503dc8..925112e 100644
--- a/test/keystrokes/gtk3-demo/role_table_flat_review.py
+++ b/test/keystrokes/gtk3-demo/role_table_flat_review.py
@@ -146,68 +146,46 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "17. Review next line",
-    ["BRAILLE LINE:  'horizontal scroll bar 0% 1 can vanilla ice cream $l'",
-     "     VISIBLE:  'horizontal scroll bar 0% 1 can v', cursor=1",
-     "SPEECH OUTPUT: 'horizontal scroll bar 0 percent. 1 can vanilla ice cream'"]))
-
-#sequence.append(utils.StartRecordingAction())
-#sequence.append(KeyComboAction("KP_9"))
-#sequence.append(utils.AssertPresentationAction(
-#    "17. Review next line",
-#    ["BRAILLE LINE:  '1 can vanilla ice cream $l'",
-#     "     VISIBLE:  '1 can vanilla ice cream $l', cursor=1",
-#     "SPEECH OUTPUT: '1 can vanilla ice cream'"]))
-
-#sequence.append(utils.StartRecordingAction())
-#sequence.append(KeyComboAction("KP_9"))
-#sequence.append(utils.AssertPresentationAction(
-#    "18. Review next line",
-#    ["BRAILLE LINE:  'horizontal scroll bar 0% $l'",
-#     "     VISIBLE:  'horizontal scroll bar 0% $l', cursor=1",
-#     "SPEECH OUTPUT: 'horizontal scroll bar 0%'"]))
+    ["BRAILLE LINE:  '1 can vanilla ice cream $l'",
+     "     VISIBLE:  '1 can vanilla ice cream $l', cursor=1",
+     "SPEECH OUTPUT: '1 can vanilla ice cream'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "18. Review next line",
-    ["BRAILLE LINE:  'Add item Remove item $l'",
-     "     VISIBLE:  'Add item Remove item $l', cursor=1",
-     "SPEECH OUTPUT: 'Add item Remove item"]))
+    ["BRAILLE LINE:  'horizontal scroll bar 0% $l'",
+     "     VISIBLE:  'horizontal scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'horizontal scroll bar 0 percent.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(utils.AssertPresentationAction(
     "19. Review next line",
-    [""]))
-
-#sequence.append(utils.StartRecordingAction())
-#sequence.append(KeyComboAction("KP_7"))
-#sequence.append(utils.AssertPresentationAction(
-#    "20. Review previous line",
-#    ["BRAILLE LINE:  'horizontal scroll bar 0% $l'",
-#     "     VISIBLE:  'horizontal scroll bar 0% $l', cursor=1",
-#     "SPEECH OUTPUT: 'horizontal scroll bar 0%'"]))
-
-#sequence.append(utils.StartRecordingAction())
-#sequence.append(KeyComboAction("KP_7"))
-#sequence.append(utils.AssertPresentationAction(
-#    "22. Review previous line",
-#    ["BRAILLE LINE:  '1 can vanilla ice cream $l'",
-#     "     VISIBLE:  '1 can vanilla ice cream $l', cursor=1",
-#     "SPEECH OUTPUT: '1 can vanilla ice cream'"]))
+    ["BRAILLE LINE:  'Add item Remove item $l'",
+     "     VISIBLE:  'Add item Remove item $l', cursor=1",
+     "SPEECH OUTPUT: 'Add item Remove item"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "20. Review previous line",
-    ["BRAILLE LINE:  'horizontal scroll bar 0% 1 can vanilla ice cream $l'",
-     "     VISIBLE:  'horizontal scroll bar 0% 1 can v', cursor=1",
-     "SPEECH OUTPUT: 'horizontal scroll bar 0 percent. 1 can vanilla ice cream'"]))
+    ["BRAILLE LINE:  'horizontal scroll bar 0% $l'",
+     "     VISIBLE:  'horizontal scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'horizontal scroll bar 0 percent.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
     "21. Review previous line",
+    ["BRAILLE LINE:  '1 can vanilla ice cream $l'",
+     "     VISIBLE:  '1 can vanilla ice cream $l', cursor=1",
+     "SPEECH OUTPUT: '1 can vanilla ice cream'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_7"))
+sequence.append(utils.AssertPresentationAction(
+    "22. Review previous line",
     ["BRAILLE LINE:  '2 packages of chocolate chip cookies $l'",
      "     VISIBLE:  '2 packages of chocolate chip coo', cursor=1",
      "SPEECH OUTPUT: '2 packages of chocolate chip cookies'"]))
@@ -215,7 +193,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "22. Review previous line",
+    "23. Review previous line",
     ["BRAILLE LINE:  '5 packages of noodles $l'",
      "     VISIBLE:  '5 packages of noodles $l', cursor=1",
      "SPEECH OUTPUT: '5 packages of noodles"]))
@@ -223,31 +201,23 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "23. Review previous line",
-    ["BRAILLE LINE:  '3 bottles of coke vertical scroll bar 0% $l'",
-     "     VISIBLE:  '3 bottles of coke vertical scrol', cursor=1",
-     "SPEECH OUTPUT: '3 bottles of coke vertical scroll bar 0 percent.'"]))
-
-#sequence.append(utils.StartRecordingAction())
-#sequence.append(KeyComboAction("KP_7"))
-#sequence.append(utils.AssertPresentationAction(
-#    "23. Review previous line",
-#    ["BRAILLE LINE:  '3 bottles of coke $l'",
-#     "     VISIBLE:  '3 bottles of coke $l', cursor=1",
-#     "SPEECH OUTPUT: '3 bottles of coke'"]))
-
-#sequence.append(utils.StartRecordingAction())
-#sequence.append(KeyComboAction("KP_7"))
-#sequence.append(utils.AssertPresentationAction(
-#    "24. Review previous line",
-#    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
-#     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
-#     "SPEECH OUTPUT: 'vertical scroll bar 0%."]))
+    "24. Review previous line",
+    ["BRAILLE LINE:  '3 bottles of coke $l'",
+     "     VISIBLE:  '3 bottles of coke $l', cursor=1",
+     "SPEECH OUTPUT: '3 bottles of coke'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "24. Review previous line",
+    "25. Review previous line",
+    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
+     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'vertical scroll bar 0 percent."]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_7"))
+sequence.append(utils.AssertPresentationAction(
+    "26. Review previous line",
     ["BRAILLE LINE:  'Number Product Yummy $l'",
      "     VISIBLE:  'Number Product Yummy $l', cursor=1",
      "SPEECH OUTPUT: 'Number Product Yummy"]))
@@ -255,7 +225,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "25. Review previous line",
+    "27. Review previous line",
     ["BRAILLE LINE:  'Shopping list (you can edit the cells!) $l'",
      "     VISIBLE:  'Shopping list (you can edit the ', cursor=1",
      "SPEECH OUTPUT: 'Shopping list (you can edit the cells!)'"]))
@@ -263,7 +233,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "26. Review previous line",
+    "28. Review previous line",
     ["BRAILLE LINE:  '6 eggs $l'",
      "     VISIBLE:  '6 eggs $l', cursor=1",
      "SPEECH OUTPUT: '6 eggs'"]))
@@ -271,7 +241,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "27. Review previous line",
+    "29. Review previous line",
     [""]))
 
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/gtk3-demo/role_text_multiline_flat_review.py 
b/test/keystrokes/gtk3-demo/role_text_multiline_flat_review.py
index c0e85a5..a084911 100644
--- a/test/keystrokes/gtk3-demo/role_text_multiline_flat_review.py
+++ b/test/keystrokes/gtk3-demo/role_text_multiline_flat_review.py
@@ -242,42 +242,33 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "14. KP_7 to flat review 'This is a test.' and the scrollbar",
-    ["BRAILLE LINE:  'This is a test.  vertical scroll bar 0% $l'",
-     "     VISIBLE:  'This is a test.  vertical scroll', cursor=1",
+    "14. KP_7 to flat review the scrollbar",
+    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
+     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
+     "SPEECH OUTPUT: 'vertical scroll bar 0 percent.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_7"))
+sequence.append(utils.AssertPresentationAction(
+    "15. KP_7 to flat review 'This is a test.'",
+    ["BRAILLE LINE:  'This is a test.  $l'",
+     "     VISIBLE:  'This is a test.  $l', cursor=1",
      "SPEECH OUTPUT: 'This is a test. ",
-     " vertical scroll bar 0 percent.'"]))
-
-#sequence.append(utils.StartRecordingAction())
-#sequence.append(KeyComboAction("KP_7"))
-#sequence.append(utils.AssertPresentationAction(
-#    "14. KP_7 to flat review 'This is a test.' and the scrollbar",
-#    ["BRAILLE LINE:  'vertical scroll bar 0% $l'",
-#     "     VISIBLE:  'vertical scroll bar 0% $l', cursor=1",
-#     "SPEECH OUTPUT: 'vertical scroll bar 0%'"]))
-#
-#sequence.append(utils.StartRecordingAction())
-#sequence.append(KeyComboAction("KP_7"))
-#sequence.append(utils.AssertPresentationAction(
-#    "15. KP_7 to flat review 'This is a test.' and the scrollbar",
-#    ["BRAILLE LINE:  'This is a test.  $l'",
-#     "     VISIBLE:  'This is a test.  $l', cursor=1",
-#     "SPEECH OUTPUT: 'This is a test. ",
-#     "'"]))
+     "'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "15. KP_7 to flat review toolbar",
+    "16. KP_7 to flat review toolbar",
     ["KNOWN ISSUE: gtk3-demo's toolbar widgets lack names that were present in the past",
-     "BRAILLE LINE:  'push button push button panel push button $l'",
-     "     VISIBLE:  'push button push button panel pu', cursor=1",
-     "SPEECH OUTPUT: 'push button push button panel push button'"]))
+     "BRAILLE LINE:  'push button push button push button $l'",
+     "     VISIBLE:  'push button push button push but', cursor=1",
+     "SPEECH OUTPUT: 'push button push button push button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(utils.AssertPresentationAction(
-    "16. KP_7 to flat review menu",
+    "17. KP_7 to flat review menu",
     ["BRAILLE LINE:  'Preferences Help $l'",
      "     VISIBLE:  'Preferences Help $l', cursor=1",
      "SPEECH OUTPUT: 'Preferences Help'"]))
@@ -285,7 +276,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_5"))
 sequence.append(utils.AssertPresentationAction(
-    "17. KP_5 to flat review 'Preferences'",
+    "18. KP_5 to flat review 'Preferences'",
     ["BRAILLE LINE:  'Preferences Help $l'",
      "     VISIBLE:  'Preferences Help $l', cursor=1",
      "SPEECH OUTPUT: 'Preferences'"]))
@@ -293,7 +284,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(utils.AssertPresentationAction(
-    "18. KP_6 to flat review 'Help'",
+    "19. KP_6 to flat review 'Help'",
     ["BRAILLE LINE:  'Preferences Help $l'",
      "     VISIBLE:  'Preferences Help $l', cursor=13",
      "SPEECH OUTPUT: 'Help'"]))
@@ -303,7 +294,7 @@ sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_5"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
-    "19. Insert+KP_5 to flat review 'Help' accessible",
+    "20. Insert+KP_5 to flat review 'Help' accessible",
     ["SPEECH OUTPUT: 'Help menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -311,9 +302,9 @@ sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_9"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
-    "20. Insert+KP_9 to flat review end",
-    ["BRAILLE LINE:  ' Cursor at row 1 column 0 - 60 chars in document $l'",
-     "     VISIBLE:  ' Cursor at row 1 column 0 - 60 c', cursor=2",
+    "21. Insert+KP_9 to flat review end",
+    ["BRAILLE LINE:  'Cursor at row 1 column 0 - 60 chars in document $l'",
+     "     VISIBLE:  'Cursor at row 1 column 0 - 60 ch', cursor=1",
      "SPEECH OUTPUT: 'Cursor at row 1 column 0 - 60 chars in document'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -321,7 +312,7 @@ sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_7"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
-    "21. Insert+KP_7 to flat review home",
+    "22. Insert+KP_7 to flat review home",
     ["BRAILLE LINE:  'Preferences Help $l'",
      "     VISIBLE:  'Preferences Help $l', cursor=1",
      "SPEECH OUTPUT: 'Preferences Help'"]))
@@ -331,9 +322,9 @@ sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_6"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
-    "22. Insert+KP_6 to flat review below",
-    ["BRAILLE LINE:  'push button push button panel push button $l'",
-     "     VISIBLE:  'push button push button panel pu', cursor=1",
+    "23. Insert+KP_6 to flat review below",
+    ["BRAILLE LINE:  'push button push button push button $l'",
+     "     VISIBLE:  'push button push button push but', cursor=1",
      "SPEECH OUTPUT: 'push button'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -341,7 +332,7 @@ sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_4"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
-    "23. Insert+KP_4 to flat review above",
+    "24. Insert+KP_4 to flat review above",
     ["BRAILLE LINE:  'Preferences Help $l'",
      "     VISIBLE:  'Preferences Help $l', cursor=1",
      "SPEECH OUTPUT: 'Preferences'"]))
@@ -349,7 +340,7 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Subtract"))
 sequence.append(utils.AssertPresentationAction(
-    "24. KP_Subtract to exit flat review",
+    "25. KP_Subtract to exit flat review",
     ["BRAILLE LINE:  'Leaving flat review.'",
      "     VISIBLE:  'Leaving flat review.', cursor=0",
      "BRAILLE LINE:  'This is only a test. $l'",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]