OSDN Git Service

devenv app module: It seems that the top level automation object is not available...
authorJames Teh <jamie@jantrid.net>
Thu, 16 Sep 2010 02:05:33 +0000 (12:05 +1000)
committerJames Teh <jamie@jantrid.net>
Thu, 16 Sep 2010 02:05:33 +0000 (12:05 +1000)
source/appModules/devenv.py

index 6c96f2e..259a7f7 100644 (file)
@@ -88,7 +88,9 @@ SB_VERT = 1
 \r
 class AppModule(_default.AppModule):\r
        def chooseNVDAObjectOverlayClasses(self, obj, clsList):\r
-               if obj.windowClassName == VsTextEditPaneClassName:\r
+               # Only use this overlay class if the top level automation object for the IDE can be retrieved,\r
+               # as it will not work otherwise.\r
+               if obj.windowClassName == VsTextEditPaneClassName and self._getDTE():\r
                        try:\r
                                clsList.remove(DisplayModelEditableText)\r
                        except ValueError:\r
@@ -119,11 +121,16 @@ class AppModule(_default.AppModule):
                        elif "!VisualStudio.DTE:%d"%self.processID==displayName:\r
                                DTEVersion = VsVersion_2002\r
                                \r
-                       if DTEVersion > 0:\r
+                       if DTEVersion != VsVersion_None:\r
                                self._DTEVersion = DTEVersion\r
                                self._DTE = comtypes.client.dynamic.Dispatch(ROT.GetObject(mon).QueryInterface(IDispatch))\r
                                break\r
-                               \r
+\r
+               else:\r
+                       # None found.\r
+                       self._DTE = None\r
+                       self._DTEVersion = VsVersion_None\r
+\r
                # Loop has completed\r
                return self._DTE\r
                \r