[BUG] Do not restart if DisplayChange was due to STM open (#223), version 1.0.25.1

This commit is contained in:
Markus Hofknecht 2021-11-09 15:12:52 +01:00
parent c84b7b3996
commit 467afe57d1
4 changed files with 26 additions and 10 deletions

View file

@ -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();
}

View file

@ -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())
{

View file

@ -10,7 +10,7 @@
<Identity
Name="49543SystemTrayMenu.SystemTrayMenu"
Publisher="CN=5884501C-92ED-45DE-9508-9D987C314243"
Version="1.0.24.0" />
Version="1.0.25.0" />
<Properties>
<DisplayName>SystemTrayMenu</DisplayName>

View file

@ -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")]