clsList.append(Edit)\r
\r
#Window root IAccessibles\r
- if self.event_objectID in (None,winUser.OBJID_WINDOW) and self.event_childID==0 and self.IAccessibleRole==oleacc.ROLE_SYSTEM_WINDOW:\r
+ if self.event_objectID==winUser.OBJID_WINDOW and self.event_childID==0 and self.IAccessibleRole==oleacc.ROLE_SYSTEM_WINDOW:\r
clsList.append(WindowRoot)\r
\r
if self.event_objectID==winUser.OBJID_TITLEBAR and self.event_childID==0:\r
except:\r
return None\r
\r
- parentUsesSuperOnWindowRootIAccessible=True #: on a window root IAccessible, super should be used instead of accParent\r
-\r
def _get_parent(self):\r
if self.IAccessibleChildID>0:\r
return IAccessible(windowHandle=self.windowHandle,IAccessibleObject=self.IAccessibleObject,IAccessibleChildID=0,event_windowHandle=self.event_windowHandle,event_objectID=self.event_objectID,event_childID=0) or super(IAccessible,self).parent\r
- if self.parentUsesSuperOnWindowRootIAccessible and self.IAccessibleRole==oleacc.ROLE_SYSTEM_WINDOW:\r
- return super(IAccessible,self).parent\r
res=IAccessibleHandler.accParent(self.IAccessibleObject,self.IAccessibleChildID)\r
if res:\r
parentObj=IAccessible(IAccessibleObject=res[0],IAccessibleChildID=res[1])\r
return super(IAccessible,self).parent\r
\r
def _get_next(self):\r
- if self.IAccessibleRole==oleacc.ROLE_SYSTEM_WINDOW:\r
- return super(IAccessible,self).next \r
res=IAccessibleHandler.accNavigate(self.IAccessibleObject,self.IAccessibleChildID,oleacc.NAVDIR_NEXT)\r
if not res:\r
return None\r
return self.correctAPIForRelation(IAccessible(IAccessibleObject=res[0],IAccessibleChildID=res[1]))\r
\r
def _get_previous(self):\r
- if self.IAccessibleRole==oleacc.ROLE_SYSTEM_WINDOW:\r
- return super(IAccessible,self).previous\r
res=IAccessibleHandler.accNavigate(self.IAccessibleObject,self.IAccessibleChildID,oleacc.NAVDIR_PREVIOUS)\r
if not res:\r
return None\r
children.append(IAccessible(windowHandle=self.windowHandle,IAccessibleObject=self.IAccessibleObject,IAccessibleChildID=IAccessibleChildID,event_windowHandle=self.event_windowHandle,event_objectID=self.event_objectID,event_childID=IAccessibleChildID))\r
continue\r
try:\r
- accRole=IAccessibleObject.accRole(0)\r
+ identity=IAccessibleHandler.getIAccIdentity(IAccessibleObject,0)\r
except COMError:\r
- accRole=0\r
+ identity=None\r
#For Window root IAccessibles, we just want to use the new window handle, but use the best API for that window, rather than IAccessible\r
#If it does happen to be IAccessible though, we only want the client, not the window root IAccessible\r
- if accRole==oleacc.ROLE_SYSTEM_WINDOW:\r
- try:\r
- windowHandle=oleacc.WindowFromAccessibleObject(IAccessibleObject)\r
- except WindowsError as e:\r
- log.debugWarning("WindowFromAccessibleObject failed: %s" % e)\r
- windowHandle=None\r
+ if identity and identity['objectID']==0 and identity['childID']==0:\r
+ windowHandle=identity.get('windowHandle',None)\r
if windowHandle:\r
kwargs=dict(windowHandle=windowHandle)\r
APIClass=Window.findBestAPIClass(kwargs,relation="parent") #Need a better relation type for this, but parent works ok -- gives the client\r
\r
TextInfo=displayModel.DisplayModelTextInfo\r
\r
+ parentUsesSuperOnWindowRootIAccessible=True #: on a window root IAccessible, super should be used instead of accParent\r
+\r
+ def _get_parent(self):\r
+ if self.parentUsesSuperOnWindowRootIAccessible:\r
+ return super(IAccessible,self).parent\r
+ return super(WindowRoot,self).parent\r
+\r
+ def _get_next(self):\r
+ return super(IAccessible,self).next \r
+\r
+ def _get_previous(self):\r
+ return super(IAccessible,self).previous\r
+\r
def _get_container(self):\r
#Support for groupbox windows\r
groupboxObj=IAccessibleHandler.findGroupboxObject(self)\r
return groupboxObj\r
return super(WindowRoot,self).container\r
\r
-\r
class ShellDocObjectView(IAccessible):\r
\r
def event_gainFocus(self):\r