guarding against deleted 'self' during the mouse handler, setting peer ptr to NULL during destruction
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -1302,8 +1302,12 @@ void wxWidgetCocoaImpl::mouseEvent(WX_NSEvent event, WXWidget slf, void *_cmd)
 | 
				
			|||||||
            superimpl(slf, (SEL)_cmd, event);
 | 
					            superimpl(slf, (SEL)_cmd, event);
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            // super of built-ins keeps the mouse up, as wx expects this event, we have to synthesize it
 | 
					            // super of built-ins keeps the mouse up, as wx expects this event, we have to synthesize it
 | 
				
			||||||
            // only trigger if at this moment the mouse is already up
 | 
					            // only trigger if at this moment the mouse is already up, and the control is still existing after the event has
 | 
				
			||||||
            if ( [ event type]  == NSLeftMouseDown && !wxGetMouseState().LeftIsDown() )
 | 
					            // been handled (we do this by looking up the native NSView's peer from the hash map, that way we are sure the info
 | 
				
			||||||
 | 
					            // is current - even when the instance memory of ourselves may have been freed ...
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( slf );
 | 
				
			||||||
 | 
					            if ( [ event type]  == NSLeftMouseDown && !wxGetMouseState().LeftIsDown() && impl != NULL )
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                wxMouseEvent wxevent(wxEVT_LEFT_DOWN);
 | 
					                wxMouseEvent wxevent(wxEVT_LEFT_DOWN);
 | 
				
			||||||
                SetupMouseEvent(wxevent , event) ;
 | 
					                SetupMouseEvent(wxevent , event) ;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2875,6 +2875,7 @@ wxWidgetImpl::wxWidgetImpl()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxWidgetImpl::~wxWidgetImpl()
 | 
					wxWidgetImpl::~wxWidgetImpl()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    m_wxPeer = NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxWidgetImpl::Init()
 | 
					void wxWidgetImpl::Init()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user