OSDN Git Service

webKit vbuf: Implement getIdentifierFromNVDAObject using getNodeForNativeHandle....
authorJames Teh <jamie@jantrid.net>
Fri, 2 Dec 2011 01:35:51 +0000 (11:35 +1000)
committerJames Teh <jamie@jantrid.net>
Fri, 2 Dec 2011 01:35:51 +0000 (11:35 +1000)
source/virtualBuffers/webKit.py

index a5bdd20..5ecca27 100644 (file)
@@ -1,3 +1,4 @@
+import ctypes\r
 from . import VirtualBuffer, VirtualBufferTextInfo\r
 import controlTypes\r
 import NVDAObjects.IAccessible\r
@@ -64,7 +65,16 @@ class WebKit(VirtualBuffer):
                        IAccessibleChildID=0)\r
 \r
        def getIdentifierFromNVDAObject(self,obj):\r
-               return obj.windowHandle, obj.event_childID\r
+               if obj == self.rootNVDAObject:\r
+                       return obj.windowHandle, 0\r
+               if not self.isReady or obj.event_childID is None:\r
+                       # We can only retrieve the node for objects obtained from events.\r
+                       raise LookupError\r
+               node = NVDAHelper.localLib.VBuf_getNodeForNativeHandle(self.VBufHandle, obj.event_childID)\r
+               docHandle=ctypes.c_int()\r
+               ID=ctypes.c_int()\r
+               NVDAHelper.localLib.VBuf_getIdentifierFromControlFieldNode(self.VBufHandle, node, ctypes.byref(docHandle), ctypes.byref(ID))\r
+               return docHandle.value, ID.value\r
 \r
        def _searchableAttribsForNodeType(self,nodeType):\r
                if nodeType=="formField":\r