[orca/570658] Cache keybinding info in the generator cache



commit 5acee3e1d857cb193730a97ea3c34ee38ed8486f
Author: Willie Walker <william walker sun com>
Date:   Tue Jun 23 13:12:48 2009 -0400

    Cache keybinding info in the generator cache

 src/orca/default.py |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/src/orca/default.py b/src/orca/default.py
index 80da462..6d45a6f 100644
--- a/src/orca/default.py
+++ b/src/orca/default.py
@@ -74,6 +74,7 @@ class Script(script.Script):
     WORDS_RE = re.compile("(\W+)", re.UNICODE)
     DISPLAYED_LABEL = 'displayedLabel'
     DISPLAYED_TEXT = 'displayedText'
+    KEY_BINDING = 'keyBinding'
 
     def __init__(self, app):
         """Creates a new script for the given application.
@@ -7050,9 +7051,16 @@ class Script(script.Script):
         """
 
         try:
+            return self.generatorCache[self.KEY_BINDING][obj]
+        except:
+            if not self.generatorCache.has_key(self.KEY_BINDING):
+                self.generatorCache[self.KEY_BINDING] = {}
+
+        try:
             action = obj.queryAction()
         except NotImplementedError:
-            return ["", "", ""]
+            self.generatorCache[self.KEY_BINDING][obj] = ["", "", ""]
+            return self.generatorCache[self.KEY_BINDING][obj]
 
         # Action is a string in the format, where the mnemonic and/or
         # accelerator can be missing.
@@ -7103,7 +7111,9 @@ class Script(script.Script):
         debug.println(debug.LEVEL_FINEST, "default.getKeyBinding: " \
                       + repr([mnemonic, fullShortcut, accelerator]))
 
-        return [mnemonic, fullShortcut, accelerator]
+        self.generatorCache[self.KEY_BINDING][obj] = \
+            [mnemonic, fullShortcut, accelerator]
+        return self.generatorCache[self.KEY_BINDING][obj]
 
     def getKnownApplications(self):
         """Retrieves the list of currently running apps for the desktop



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