Attempt to fix MSW Cancel-still-validates bug.
Fixes: lp:1805361 * https://bugs.launchpad.net/kicad/+bug/1805361
This commit is contained in:
parent
8cf9ab5a4c
commit
72f17ad7f0
|
@ -92,17 +92,25 @@ void UNIT_BINDER::onSetFocus( wxFocusEvent& aEvent )
|
|||
|
||||
void UNIT_BINDER::onKillFocus( wxFocusEvent& aEvent )
|
||||
{
|
||||
auto textEntry = dynamic_cast<wxTextEntry*>( m_value );
|
||||
|
||||
if( m_allowEval && textEntry )
|
||||
if( aEvent.GetWindow() && aEvent.GetWindow()->GetId() == wxID_CANCEL )
|
||||
{
|
||||
if( m_eval.Process( textEntry->GetValue() ) )
|
||||
textEntry->ChangeValue( m_eval.Result() );
|
||||
|
||||
m_needsEval = false;
|
||||
// Don't eval or validate when focus lost due to Cancel. While most platforms
|
||||
// suppress KillFocus events after a Cancel, MSW (at least) does not.
|
||||
}
|
||||
else
|
||||
{
|
||||
auto textEntry = dynamic_cast<wxTextEntry*>( m_value );
|
||||
|
||||
Validate( true );
|
||||
if( m_allowEval && textEntry )
|
||||
{
|
||||
if( m_eval.Process( textEntry->GetValue() ) )
|
||||
textEntry->ChangeValue( m_eval.Result() );
|
||||
|
||||
m_needsEval = false;
|
||||
}
|
||||
|
||||
Validate( true );
|
||||
}
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue