diff --git a/Business/App.cs b/Business/App.cs
index 7c5e642..5fb2f46 100644
--- a/Business/App.cs
+++ b/Business/App.cs
@@ -18,7 +18,6 @@ namespace SystemTrayMenu
private readonly AppNotifyIcon menuNotifyIcon = new();
private readonly Menus menus = new();
private readonly TaskbarForm taskbarForm = null;
- private readonly Timer timerActivateMenuAfterTaskbarFormMinimizedFinished = new();
public App()
{
@@ -29,43 +28,29 @@ namespace SystemTrayMenu
menuNotifyIcon.Click += () => menus.SwitchOpenClose(true);
menuNotifyIcon.OpenLog += Log.OpenLogFile;
menus.MainPreload();
- timerActivateMenuAfterTaskbarFormMinimizedFinished.Interval = 20;
- timerActivateMenuAfterTaskbarFormMinimizedFinished.Tick += Timer_Tick;
-
- void Timer_Tick(object sender, EventArgs e)
- {
- timerActivateMenuAfterTaskbarFormMinimizedFinished.Stop();
- if (menus.IsNotNullAndIsUsableAndNotClosing())
- {
- taskbarForm.Activate();
- menus.ReActivateIfVisible();
- }
- }
if (Properties.Settings.Default.ShowInTaskbar)
{
taskbarForm = new TaskbarForm();
taskbarForm.FormClosed += (s, e) => Application.Exit();
- int eachSecondResizeEvent = 1;
- taskbarForm.Resize += (s, e) =>
+ taskbarForm.Deactivate += (s, e) => SetStateNormal();
+ taskbarForm.Resize += (s, e) => SetStateNormal();
+ taskbarForm.Activated += TasbkarItemActivated;
+ void TasbkarItemActivated(object sender, EventArgs e)
{
- if (eachSecondResizeEvent++ % 2 == 0 && Form.ActiveForm != null)
- {
- menus.SwitchOpenCloseByTaskbarItem();
- timerActivateMenuAfterTaskbarFormMinimizedFinished.Start();
- }
-
- taskbarForm.WindowState = FormWindowState.Minimized;
- };
-
- taskbarForm.Show();
+ SetStateNormal();
+ taskbarForm.Activate();
+ taskbarForm.Focus();
+ menus.SwitchOpenCloseByTaskbarItem();
+ }
}
+
+ DllImports.NativeMethods.User32ShowInactiveTopmost(taskbarForm);
}
public void Dispose()
{
taskbarForm?.Dispose();
- timerActivateMenuAfterTaskbarFormMinimizedFinished.Dispose();
SystemEvents.DisplaySettingsChanged -= (s, e) => SystemEvents_DisplaySettingsChanged();
menus.Dispose();
menuNotifyIcon.Dispose();
@@ -75,5 +60,16 @@ namespace SystemTrayMenu
{
menus.ReAdjustSizeAndLocation();
}
+
+ ///
+ /// This ensures that next click on taskbaritem works as activate event/click event.
+ ///
+ private void SetStateNormal()
+ {
+ if (Form.ActiveForm == taskbarForm)
+ {
+ taskbarForm.WindowState = FormWindowState.Normal;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Business/Menus.cs b/Business/Menus.cs
index bf9990b..a40ddad 100644
--- a/Business/Menus.cs
+++ b/Business/Menus.cs
@@ -14,7 +14,6 @@ namespace SystemTrayMenu.Business
using System.Linq;
using System.Windows.Forms;
using SystemTrayMenu.DataClasses;
- using SystemTrayMenu.DllImports;
using SystemTrayMenu.Handler;
using SystemTrayMenu.Helper;
using SystemTrayMenu.UserInterface;
@@ -563,19 +562,6 @@ namespace SystemTrayMenu.Business
timerStillActiveCheck.Start();
}
- internal bool IsNotNullAndIsUsableAndNotClosing()
- {
- return menus[0] != null && menus[0].IsUsable && Form.ActiveForm == menus[0];
- }
-
- internal void ReActivateIfVisible()
- {
- menus[0].Activate();
- NativeMethods.User32ShowInactiveTopmost(menus[0]);
- NativeMethods.ForceForegroundWindow(menus[0].Handle);
- timerStillActiveCheck.Start();
- }
-
internal bool IsOpenCloseStateOpening()
{
return openCloseState == OpenCloseState.Opening;
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index 21c5939..1e1f9b6 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.2.9.11")]
-[assembly: AssemblyFileVersion("1.2.9.11")]
+[assembly: AssemblyVersion("1.2.9.10")]
+[assembly: AssemblyFileVersion("1.2.9.10")]
diff --git a/UserInterface/TaskbarForm.Designer.cs b/UserInterface/TaskbarForm.Designer.cs
index a3c67d4..ba5e5fd 100644
--- a/UserInterface/TaskbarForm.Designer.cs
+++ b/UserInterface/TaskbarForm.Designer.cs
@@ -45,7 +45,6 @@
this.Name = "TaskbarForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "SystemTrayMenu";
- this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
this.LocationChanged += new System.EventHandler(this.TaskbarForm_LocationChanged);
this.ResumeLayout(false);
diff --git a/UserInterface/TaskbarForm.cs b/UserInterface/TaskbarForm.cs
index 8cc8e5e..4b4bb00 100644
--- a/UserInterface/TaskbarForm.cs
+++ b/UserInterface/TaskbarForm.cs
@@ -22,9 +22,7 @@ namespace SystemTrayMenu.UserInterface
private void TaskbarForm_LocationChanged(object sender, System.EventArgs e)
{
- this.LocationChanged -= new System.EventHandler(this.TaskbarForm_LocationChanged);
SetLocation();
- this.LocationChanged += new System.EventHandler(this.TaskbarForm_LocationChanged);
}
///