#See the file COPYING for more details.\r
#Copyright (C) 2006-2010 Michael Curran <mick@kulgan.net>, James Teh <jamie@jantrid.net>\r
\r
+from collections import namedtuple\r
import IAccessibleHandler\r
import oleacc\r
import winUser\r
\r
def _get_treeInterceptorClass(self):\r
states=self.states\r
- ver=_getGeckoVersion(self)\r
- if (not ver or ver.startswith('1.9')) and self.windowClassName!="MozillaContentWindowClass":\r
+ ver=getGeckoVersion(self)\r
+ if (not ver or ver.full.startswith('1.9')) and self.windowClassName!="MozillaContentWindowClass":\r
return super(Document,self).treeInterceptorClass\r
if controlTypes.STATE_READONLY in states:\r
import virtualBuffers.gecko_ia2\r
return False\r
return super(EmbeddedObject, self).shouldAllowIAccessibleFocusEvent\r
\r
-def _getGeckoVersion(obj):\r
+GeckoVersion = namedtuple("GeckoVersion", ("full", "major"))\r
+def getGeckoVersion(obj):\r
appMod = obj.appModule\r
try:\r
return appMod._geckoVersion\r
except AttributeError:\r
pass\r
try:\r
- ver = obj.IAccessibleObject.QueryInterface(IServiceProvider).QueryService(IAccessibleHandler.IAccessibleApplication._iid_, IAccessibleHandler.IAccessibleApplication).toolkitVersion\r
+ full = obj.IAccessibleObject.QueryInterface(IServiceProvider).QueryService(IAccessibleHandler.IAccessibleApplication._iid_, IAccessibleHandler.IAccessibleApplication).toolkitVersion\r
except COMError:\r
return None\r
- appMod._geckoVersion = ver\r
+ try:\r
+ major = int(full.split(".", 1)[0])\r
+ except ValueError:\r
+ major = None\r
+ ver = appMod._geckoVersion = GeckoVersion(full, major)\r
return ver\r
\r
class GeckoPluginWindowRoot(WindowRoot):\r
# Skip the window wrapping the plugin window,\r
# which doesn't expose a Gecko accessible in Gecko >= 11.\r
parent=parent.parent.parent\r
- ver=_getGeckoVersion(parent)\r
- if ver and not ver.startswith('1.'):\r
+ ver=getGeckoVersion(parent)\r
+ if ver and ver.major!=1:\r
res=IAccessibleHandler.accNavigate(parent.IAccessibleObject,0,IAccessibleHandler.NAVRELATION_EMBEDS)\r
if res:\r
obj=IAccessible(IAccessibleObject=res[0],IAccessibleChildID=res[1])\r
if iaRole in _IAccessibleRolesWithBrokenFocusedState:\r
clsList.append(BrokenFocusedState)\r
\r
- ver = _getGeckoVersion(obj)\r
- if ver and ver.startswith("1.9"):\r
+ ver = getGeckoVersion(obj)\r
+ if ver and ver.full.startswith("1.9"):\r
clsList.append(Gecko1_9)\r
\r
clsList.append(Mozilla)\r