Break wait loops on null TOOL_EVENT

The Wait() function will return a null TOOL_EVENT when the tool
stack is shutting down, so we can't just always pass the event,
instead we must check for null and end the looping if a null
event appears.
This commit is contained in:
Ian McInerney 2020-10-27 00:32:41 +00:00
parent 6bd3b0afa4
commit 0948d67e56
3 changed files with 22 additions and 4 deletions

View File

@ -1785,7 +1785,13 @@ bool EDIT_TOOL::pickReferencePoint( const wxString& aTooltip, const wxString& aS
m_toolMgr->RunAction( ACTIONS::pickerTool, true, &tool );
while( !done )
Wait()->SetPassEvent();
{
// Pass events unless we receive a null event, then we must shut down
if( TOOL_EVENT* evt = Wait() )
evt->SetPassEvent();
else
break;
}
// Ensure statusPopup is hidden after use and before deleting it:
m_statusPopup->Hide();

View File

@ -331,7 +331,13 @@ int GROUP_TOOL::PickNewMember( const TOOL_EVENT& aEvent )
m_toolMgr->RunAction( ACTIONS::pickerTool, true, &tool );
while( !done )
Wait()->SetPassEvent();
{
// Pass events unless we receive a null event, then we must shut down
if( TOOL_EVENT* evt = Wait() )
evt->SetPassEvent();
else
break;
}
return 0;
}

View File

@ -184,7 +184,13 @@ int POSITION_RELATIVE_TOOL::SelectPositionRelativeItem( const TOOL_EVENT& aEvent
m_toolMgr->RunAction( ACTIONS::pickerTool, true, &tool );
while( !done )
Wait()->SetPassEvent();
{
// Pass events unless we receive a null event, then we must shut down
if( TOOL_EVENT* evt = Wait() )
evt->SetPassEvent();
else
break;
}
return 0;
}