From d4af758c8c734997ff9f569ad9402048c958f836 Mon Sep 17 00:00:00 2001 From: James Teh Date: Thu, 31 Jan 2013 15:08:33 +1000 Subject: [PATCH] flash backend: Handle events for windowless Flash. --- nvdaHelper/vbufBackends/adobeFlash/adobeFlash.cpp | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/nvdaHelper/vbufBackends/adobeFlash/adobeFlash.cpp b/nvdaHelper/vbufBackends/adobeFlash/adobeFlash.cpp index 5c2aa21cf..9bb7e8a3c 100644 --- a/nvdaHelper/vbufBackends/adobeFlash/adobeFlash.cpp +++ b/nvdaHelper/vbufBackends/adobeFlash/adobeFlash.cpp @@ -48,22 +48,22 @@ void CALLBACK AdobeFlashVBufBackend_t::renderThread_winEventProcHook(HWINEVENTHO } int docHandle=(int)hwnd; - int ID=childID; - VBufBackend_t* backend=NULL; + int ID=(childID>0)?childID:objectID; for(VBufBackendSet_t::iterator i=runningBackends.begin();i!=runningBackends.end();++i) { + AdobeFlashVBufBackend_t* backend=NULL; HWND rootWindow=(HWND)((*i)->rootDocHandle); - if(rootWindow==hwnd) { - backend=(*i); + if(rootWindow!=hwnd) + continue; + backend=static_cast(*i); + VBufStorage_controlFieldNode_t* node=backend->getControlFieldNodeWithIdentifier(docHandle,ID); + if(node) + backend->invalidateSubtree(node); + if(!backend->isWindowless) { + // If this is not windowless, there can only be one backend with this docHandle, + // so stop searching. + break; } } - if(!backend) { - return; - } - VBufStorage_controlFieldNode_t* node=backend->getControlFieldNodeWithIdentifier(docHandle,ID); - if(!node) { - return; - } - backend->invalidateSubtree(node); } VBufStorage_fieldNode_t* AdobeFlashVBufBackend_t::renderControlContent(VBufStorage_buffer_t* buffer, VBufStorage_controlFieldNode_t* parentNode, VBufStorage_fieldNode_t* previousNode, int docHandle, int id, IAccessible* pacc) { -- 2.11.0