@@ -701,37 +701,40 @@ def internal_hasFocus(sourceContext):
701701@AccessBridge_PropertyNameChangeFP
702702def event_nameChange (vmID ,event ,source ,oldVal ,newVal ):
703703 jabContext = JABContext (vmID = vmID ,accContext = source )
704- focus = api .getFocusObject ()
705- if isinstance (focus , NVDAObjects .JAB .JAB ) and focus .jabContext == jabContext :
706- obj = focus
707- else :
708- obj = NVDAObjects .JAB .JAB (jabContext = jabContext )
709- if obj :
710- eventHandler .queueEvent ("nameChange" , obj )
704+ if jabContext .hwnd :
705+ focus = api .getFocusObject ()
706+ if isinstance (focus , NVDAObjects .JAB .JAB ) and focus .jabContext == jabContext :
707+ obj = focus
708+ else :
709+ obj = NVDAObjects .JAB .JAB (jabContext = jabContext )
710+ if obj :
711+ eventHandler .queueEvent ("nameChange" , obj )
711712 bridgeDll .releaseJavaObject (vmID ,event )
712713
713714@AccessBridge_PropertyDescriptionChangeFP
714715def event_descriptionChange (vmID ,event ,source ,oldVal ,newVal ):
715716 jabContext = JABContext (vmID = vmID ,accContext = source )
716- focus = api .getFocusObject ()
717- if isinstance (focus , NVDAObjects .JAB .JAB ) and focus .jabContext == jabContext :
718- obj = focus
719- else :
720- obj = NVDAObjects .JAB .JAB (jabContext = jabContext )
721- if obj :
722- eventHandler .queueEvent ("descriptionChange" , obj )
717+ if jabContext .hwnd :
718+ focus = api .getFocusObject ()
719+ if isinstance (focus , NVDAObjects .JAB .JAB ) and focus .jabContext == jabContext :
720+ obj = focus
721+ else :
722+ obj = NVDAObjects .JAB .JAB (jabContext = jabContext )
723+ if obj :
724+ eventHandler .queueEvent ("descriptionChange" , obj )
723725 bridgeDll .releaseJavaObject (vmID ,event )
724726
725727@AccessBridge_PropertyValueChangeFP
726728def event_valueChange (vmID ,event ,source ,oldVal ,newVal ):
727729 jabContext = JABContext (vmID = vmID ,accContext = source )
728- focus = api .getFocusObject ()
729- if isinstance (focus , NVDAObjects .JAB .JAB ) and focus .jabContext == jabContext :
730- obj = focus
731- else :
732- obj = NVDAObjects .JAB .JAB (jabContext = jabContext )
733- if obj :
734- eventHandler .queueEvent ("valueChange" , obj )
730+ if jabContext .hwnd :
731+ focus = api .getFocusObject ()
732+ if isinstance (focus , NVDAObjects .JAB .JAB ) and focus .jabContext == jabContext :
733+ obj = focus
734+ else :
735+ obj = NVDAObjects .JAB .JAB (jabContext = jabContext )
736+ if obj :
737+ eventHandler .queueEvent ("valueChange" , obj )
735738 bridgeDll .releaseJavaObject (vmID ,event )
736739
737740@AccessBridge_PropertyStateChangeFP
@@ -741,6 +744,8 @@ def internal_event_stateChange(vmID,event,source,oldState,newState):
741744
742745def event_stateChange (vmID ,accContext ,oldState ,newState ):
743746 jabContext = JABContext (vmID = vmID ,accContext = accContext )
747+ if not jabContext .hwnd :
748+ return
744749 focus = api .getFocusObject ()
745750 #For broken tabs and menus, we need to watch for things being selected and pretend its a focus change
746751 stateList = newState .split (',' )
@@ -770,14 +775,16 @@ def internal_event_caretChange(vmID, event,source,oldPos,newPos):
770775
771776def event_caret (vmID , accContext , hwnd ):
772777 jabContext = JABContext (hwnd = hwnd , vmID = vmID , accContext = accContext )
773- focus = api .getFocusObject ()
774- if isinstance (focus , NVDAObjects .JAB .JAB ) and focus .jabContext == jabContext :
775- obj = focus
776- else :
777- obj = NVDAObjects .JAB .JAB (jabContext = jabContext )
778- if not obj :
779- return
780- eventHandler .queueEvent ("caret" , obj )
778+ if jabContext .hwnd :
779+ focus = api .getFocusObject ()
780+ if isinstance (focus , NVDAObjects .JAB .JAB ) and focus .jabContext == jabContext :
781+ obj = focus
782+ else :
783+ obj = NVDAObjects .JAB .JAB (jabContext = jabContext )
784+ if not obj :
785+ return
786+ eventHandler .queueEvent ("caret" , obj )
787+
781788
782789def event_enterJavaWindow (hwnd ):
783790 internalQueueFunction (enterJavaWindow_helper ,hwnd )
0 commit comments