else if ( currentMouseWindow )
{
currentMouseWindow->ScreenToClient( &wxevent.m_x , &wxevent.m_y ) ;
+ wxWindow *currentMouseWindowParent = currentMouseWindow->GetParent();
wxevent.SetEventObject( currentMouseWindow ) ;
#endif
HandleControlClick( (ControlRef) currentMouseWindow->GetHandle() , clickLocation ,
modifiers , (ControlActionUPP ) -1 ) ;
+
+ // We need to handle the rare case that the control to
+ // which the currentMouseWindow points gets deleted as
+ // a reaction to HandleControlClick. This would lead to
+ // a crash in the update cursor code below.
+ if (!currentMouseWindowParent->GetChildren().Find( currentMouseWindow ))
+ currentMouseWindow = NULL;
}
result = noErr ;
}
{
cursorTarget = cursorTarget->GetParent() ;
if ( cursorTarget )
- cursorPoint += cursorTarget->GetPosition() ;
+ cursorPoint += cursorTarget->GetPosition();
}
} // else if ( currentMouseWindow )