[orca] Fix another false positive with clipboard messages



commit b812d17073672debccf2745a6b340f8b923fa6be
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Tue Mar 22 12:24:40 2016 -0400

    Fix another false positive with clipboard messages

 src/orca/script_utilities.py             |   24 ++++++++++++++++++++++++
 src/orca/scripts/default.py              |    3 +++
 src/orca/scripts/web/script_utilities.py |   18 +-----------------
 3 files changed, 28 insertions(+), 17 deletions(-)
---
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index a2e0eb3..eeeeeb5 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -1832,6 +1832,30 @@ class Utilities:
 
         return obj
 
+    def topLevelObjectIsActiveAndCurrent(self, obj=None):
+        obj = obj or orca_state.locusOfFocus
+
+        topLevel = self.topLevelObject(obj)
+        if not topLevel:
+            return False
+
+        topLevel.clearCache()
+        try:
+            state = topLevel.getState()
+        except:
+            msg = "ERROR: Exception getting state of topLevel %s" % topLevel
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return False
+
+        if not state.contains(pyatspi.STATE_ACTIVE) \
+           or state.contains(pyatspi.STATE_DEFUNCT):
+            return False
+
+        if not self.isSameObject(topLevel, orca_state.activeWindow):
+            return False
+
+        return True
+
     @staticmethod
     def onSameLine(obj1, obj2, delta=0):
         """Determines if obj1 and obj2 are on the same line."""
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index 28f338e..e551bc2 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -2802,6 +2802,9 @@ class Script(script.Script):
         if not self.utilities.objectContentsAreInClipboard():
             return
 
+        if not self.utilities.topLevelObjectIsActiveAndCurrent():
+            return
+
         if self.utilities.lastInputEventWasCopy():
             self.presentMessage(messages.CLIPBOARD_COPIED_FULL, messages.CLIPBOARD_COPIED_BRIEF)
             return
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 318bcc6..66ad9bc 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -3049,23 +3049,7 @@ class Utilities(script_utilities.Utilities):
         if not self.inDocumentContent():
             return False
 
-        topLevel = self.topLevelObject(orca_state.locusOfFocus)
-        if not topLevel:
-            return False
-
-        topLevel.clearCache()
-        try:
-            state = topLevel.getState()
-        except:
-            msg = "WEB: Exception getting state of topLevel %s" % topLevel
-            debug.println(debug.LEVEL_INFO, msg, True)
-            return False
-
-        if not state.contains(pyatspi.STATE_ACTIVE) \
-           or state.contains(pyatspi.STATE_DEFUNCT):
-            return False
-
-        if not self.isSameObject(topLevel, orca_state.activeWindow):
+        if not self.topLevelObjectIsActiveAndCurrent():
             return False
 
         if 'Action' in pyatspi.listInterfaces(orca_state.locusOfFocus):


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