OSDN Git Service

MSHTML NVDAObject: make the HTMLNodeName and HTMLNodeUniqueNumber properties be...
authorMichael Curran <mick@kulgan.net>
Thu, 16 Jun 2011 04:24:42 +0000 (14:24 +1000)
committerMichael Curran <mick@kulgan.net>
Thu, 16 Jun 2011 04:24:42 +0000 (14:24 +1000)
source/NVDAObjects/IAccessible/MSHTML.py

index d120fc3..8522c04 100644 (file)
@@ -337,11 +337,8 @@ class MSHTML(IAccessible):
                        clsList.append(EditableTextWithoutAutoSelectDetection)\r
                #fix for #974\r
                #this fails on some control in vs2008 new project wizard\r
-               try:\r
-                       nodeName = self.HTMLNode.nodeName\r
-               except COMError:\r
-                       pass\r
-               else:\r
+               nodeName = self.HTMLNodeName\r
+               if nodeName:\r
                        if nodeNamesToNVDARoles.get(nodeName) == controlTypes.ROLE_DOCUMENT:\r
                                clsList.append(Body)\r
                        elif nodeName == "OBJECT":\r
@@ -716,13 +713,17 @@ class MSHTML(IAccessible):
                raise NotImplementedError\r
 \r
        def _get_HTMLNodeUniqueNumber(self):\r
-               return self.HTMLNode.uniqueNumber\r
+               if not hasattr(self,'_HTMLNodeUniqueNumber'):\r
+                       self._HTMLNodeUniqueNumber=self.HTMLNode.uniqueNumber\r
+               return self._HTMLNodeUniqueNumber\r
 \r
        def _get_HTMLNodeName(self):\r
-               try:\r
-                       return self.HTMLNode.nodeName\r
-               except (COMError,NameError):\r
-                       return ""\r
+               if not hasattr(self,'_HTMLNodeName'):\r
+                       try:\r
+                               self._HTMLNodeName=self.HTMLNode.nodeName\r
+                       except (COMError,NameError):\r
+                               return ""\r
+               return self._HTMLNodeName\r
 \r
 class V6ComboBox(IAccessible):\r
        """The object which receives value change events for combo boxes in MSHTML/IE 6.\r