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 )
|
void UNIT_BINDER::onKillFocus( wxFocusEvent& aEvent )
|
||||||
{
|
{
|
||||||
auto textEntry = dynamic_cast<wxTextEntry*>( m_value );
|
if( aEvent.GetWindow() && aEvent.GetWindow()->GetId() == wxID_CANCEL )
|
||||||
|
|
||||||
if( m_allowEval && textEntry )
|
|
||||||
{
|
{
|
||||||
if( m_eval.Process( textEntry->GetValue() ) )
|
// Don't eval or validate when focus lost due to Cancel. While most platforms
|
||||||
textEntry->ChangeValue( m_eval.Result() );
|
// suppress KillFocus events after a Cancel, MSW (at least) does not.
|
||||||
|
|
||||||
m_needsEval = false;
|
|
||||||
}
|
}
|
||||||
|
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();
|
aEvent.Skip();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue