[orca] Detect, and clean up scripts for, duplicate/bogus accessible applications
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Detect, and clean up scripts for, duplicate/bogus accessible applications
- Date: Thu, 23 Feb 2017 13:23:18 +0000 (UTC)
commit 070e74cd9da093b69182aba7e602e9ea7448a163
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Thu Feb 23 08:22:04 2017 -0500
Detect, and clean up scripts for, duplicate/bogus accessible applications
src/orca/event_manager.py | 3 ++
src/orca/script_manager.py | 3 ++
src/orca/scripts/web/script_utilities.py | 32 ++++++++++++++++++++++++++++++
3 files changed, 38 insertions(+), 0 deletions(-)
---
diff --git a/src/orca/event_manager.py b/src/orca/event_manager.py
index cbcf091..70876cf 100644
--- a/src/orca/event_manager.py
+++ b/src/orca/event_manager.py
@@ -627,6 +627,9 @@ class EventManager:
debug.printException(debug.LEVEL_WARNING)
return
+ if eType.startswith("window"):
+ _scriptManager.reclaimScripts()
+
# Clean up any flat review context so that Orca does not get
# confused (see bgo#609633)
#
diff --git a/src/orca/script_manager.py b/src/orca/script_manager.py
index 8ece76f..77b8115 100644
--- a/src/orca/script_manager.py
+++ b/src/orca/script_manager.py
@@ -311,6 +311,9 @@ class ScriptManager:
return
for app in appList:
+ msg = "SCRIPT MANAGER: %s is no longer in registry's desktop" % app
+ debug.println(debug.LEVEL_INFO, msg, True)
+
appScript = self.appScripts.pop(app)
del appScript
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index ef68b0e..229b020 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -217,7 +217,39 @@ class Utilities(script_utilities.Utilities):
return list(filter(self.isDocument, targets))
+ def sanityCheckApplication(self):
+ try:
+ appInDesktop = self._script.app in pyatspi.Registry.getDesktop(0)
+ except:
+ appInDesktop = False
+
+ if appInDesktop:
+ return True
+
+ msg = "WARNING: %s is not in the registry's desktop" % self._script.app
+ debug.println(debug.LEVEL_INFO, msg, True)
+
+ try:
+ app = orca_state.activeWindow.getApplication()
+ except:
+ msg = "ERROR: Exception getting application for active window"
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return False
+
+ msg = "WEB: Application for active window is %s" % app
+ debug.println(debug.LEVEL_INFO, msg, True)
+
+ if app in pyatspi.Registry.getDesktop(0):
+ self._script.app = app
+ return True
+
+ msg = "WARNING: App for window is not in the registry's desktop"
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return False
+
def sanityCheckActiveWindow(self):
+ self.sanityCheckApplication()
+
app = self._script.app
try:
windowInApp = orca_state.activeWindow in app
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]