+import ctypes\r
from . import VirtualBuffer, VirtualBufferTextInfo\r
import controlTypes\r
import NVDAObjects.IAccessible\r
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