diff --git a/Business/App.cs b/Business/App.cs
index 437db28..04f2c85 100644
--- a/Business/App.cs
+++ b/Business/App.cs
@@ -40,7 +40,11 @@ namespace SystemTrayMenu
private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
{
- if (!menus.IsOpenCloseStateOpening())
+ if (menus.IsShortlyAfterOpening())
+ {
+ Log.Info("Ignored DisplaySettingsChanged, because IsShortlyAfterOpening == true");
+ }
+ else
{
AppRestart.ByDisplaySettings();
}
diff --git a/Business/Menus.cs b/Business/Menus.cs
index 89a447c..79e4104 100644
--- a/Business/Menus.cs
+++ b/Business/Menus.cs
@@ -33,6 +33,8 @@ namespace SystemTrayMenu.Business
private readonly Timer timerStillActiveCheck = new Timer();
private readonly WaitLeave waitLeave = new WaitLeave(Properties.Settings.Default.TimeUntilCloses);
private DateTime deactivatedTime = DateTime.MinValue;
+ private DateTime dateTimeLastOpening = DateTime.MinValue;
+ private DateTime dateTimeDisplaySettingsChanged = DateTime.MinValue;
private OpenCloseState openCloseState = OpenCloseState.Default;
private bool showingMessageBox;
private TaskbarPosition taskbarPosition = new WindowsTaskbar().Position;
@@ -80,7 +82,6 @@ namespace SystemTrayMenu.Business
"MessageRootFolderEmpty"));
OpenFolder();
Config.SetFolderByUser();
- openCloseState = OpenCloseState.Default;
showingMessageBox = false;
}
@@ -93,7 +94,6 @@ namespace SystemTrayMenu.Business
"MessageRootFolderNoAccess"));
OpenFolder();
Config.SetFolderByUser();
- openCloseState = OpenCloseState.Default;
showingMessageBox = false;
}
@@ -104,6 +104,8 @@ namespace SystemTrayMenu.Business
default:
break;
}
+
+ openCloseState = OpenCloseState.Default;
}
waitToOpenMenu.StopLoadMenu += WaitToOpenMenu_StopLoadMenu;
@@ -483,9 +485,13 @@ namespace SystemTrayMenu.Business
internal bool IsOpenCloseStateOpening()
{
- Log.Info(openCloseState.ToString());
- return openCloseState == OpenCloseState.Opening ||
- (openCloseState == OpenCloseState.Default && menus[0] != null && menus[0].Visible);
+ return openCloseState == OpenCloseState.Opening || (DateTime.Now - dateTimeDisplaySettingsChanged).TotalMilliseconds < 500;
+ }
+
+ internal bool IsShortlyAfterOpening()
+ {
+ dateTimeDisplaySettingsChanged = DateTime.Now;
+ return (DateTime.Now - dateTimeLastOpening).TotalMilliseconds < 2000;
}
internal void SwitchOpenClose(bool byClick)
@@ -519,6 +525,7 @@ namespace SystemTrayMenu.Business
}
deactivatedTime = DateTime.MinValue;
+ dateTimeLastOpening = DateTime.Now;
}
internal void DisposeMenu(Menu menuToDispose)
@@ -672,9 +679,14 @@ namespace SystemTrayMenu.Business
menu.Deactivate += Deactivate;
void Deactivate(object sender, EventArgs e)
{
- if (!Properties.Settings.Default.StaysOpenWhenFocusLostAfterEnterPressed ||
+ if (IsOpenCloseStateOpening())
+ {
+ Log.Info("Ignored Deactivate, because openCloseState == OpenCloseState.Opening");
+ }
+ else if (!Properties.Settings.Default.StaysOpenWhenFocusLostAfterEnterPressed ||
!waitingForReactivate)
{
+ Log.Info($"Deactivate {openCloseState}");
FadeHalfOrOutIfNeeded();
if (!IsActive())
{
diff --git a/Packaging/Package.appxmanifest b/Packaging/Package.appxmanifest
index 1b7b1ad..3a4c1d9 100644
--- a/Packaging/Package.appxmanifest
+++ b/Packaging/Package.appxmanifest
@@ -10,7 +10,7 @@
+ Version="1.0.25.0" />
SystemTrayMenu
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index 0365429..6fc4b65 100644
--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -39,5 +39,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.25.0")]
-[assembly: AssemblyFileVersion("1.0.25.0")]
+[assembly: AssemblyVersion("1.0.25.1")]
+[assembly: AssemblyFileVersion("1.0.25.1")]