private void DynamoView_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key != Key.Escape || !IsMouseOver) return;
var vm = dynamoViewModel.BackgroundPreviewViewModel;
// ESC key to navigate has long lag on some machines.
// This issue was caused by using KeyEventArgs.IsRepeated API
// In order to fix this we need to use our own extension method DelayInvoke to determine
// whether ESC key is being held down or not
if (!IsEscKeyPressed && !vm.NavigationKeyIsDown)
{
IsEscKeyPressed = true;
dynamoViewModel.UIDispatcher.DelayInvoke(navigationInterval, () =>
{
if (IsEscKeyPressed)
{
vm.NavigationKeyIsDown = true;
}
});
}
else
{
vm.CancelNavigationState();
}
e.Handled = true;
}