void UpdateAppFocusStatus (bool hasFocus, bool lastFocusedExists)
{
if (hasFocus != appHasFocus) {
// The last focused window has been destroyed. Wait a few ms since another app's window
// may gain focus again
DateTime now = DateTime.Now;
if (focusCheckDelayTimeout == DateTime.MinValue) {
focusCheckDelayTimeout = now.AddMilliseconds (100);
return;
}
if (now < focusCheckDelayTimeout)
return;
focusCheckDelayTimeout = DateTime.MinValue;
appHasFocus = hasFocus;
if (appHasFocus) {
if (ApplicationFocusIn != null)
ApplicationFocusIn (this, EventArgs.Empty);
} else {
if (ApplicationFocusOut != null)
ApplicationFocusOut (this, EventArgs.Empty);
}
} else
focusCheckDelayTimeout = DateTime.MinValue;
}