Skip to content

Commit ae4cc37

Browse files
authored
Merge ee1a19f into 14dfcac
2 parents 14dfcac + ee1a19f commit ae4cc37

File tree

2 files changed

+41
-12
lines changed

2 files changed

+41
-12
lines changed

StageManager/MainWindow.xaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@
117117
IconSource="StageManager.ico"
118118
MenuActivation="LeftOrRightClick">
119119
<tb:TaskbarIcon.ContextMenu>
120-
<ContextMenu>
120+
<ContextMenu
121+
Opened="ContextMenu_Opened"
122+
Closed="ContextMenu_Closed">
121123
<MenuItem
122124
Header="Start with Windows"
123125
IsCheckable="True"

StageManager/MainWindow.xaml.cs

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,12 @@ protected override void OnInitialized(EventArgs e)
5757
_thisHandle = new System.Windows.Interop.WindowInteropHelper(this).Handle;
5858
_lastWidth = Width;
5959

60-
_hook = new TaskPoolGlobalHook();
61-
62-
_hook.MousePressed += OnMousePressed;
63-
_hook.MouseReleased += OnMouseReleased;
64-
_hook.MouseMoved += _hook_MouseMoved;
65-
66-
Task.Run(_hook.Run);
60+
StartHook();
6761
}
6862

6963
protected override void OnClosed(EventArgs e)
7064
{
71-
_hook.MousePressed -= OnMousePressed;
72-
_hook.MouseReleased -= OnMouseReleased;
73-
_hook.MouseMoved -= _hook_MouseMoved;
74-
_hook.Dispose();
65+
StopHook();
7566

7667
trayIcon.Dispose();
7768

@@ -318,6 +309,32 @@ private void ApplyWindowMode()
318309
BeginAnimation(LeftProperty, animation);
319310
}
320311

312+
private void StartHook()
313+
{
314+
_hook = new TaskPoolGlobalHook();
315+
316+
_hook.MousePressed += OnMousePressed;
317+
_hook.MouseReleased += OnMouseReleased;
318+
_hook.MouseMoved += _hook_MouseMoved;
319+
320+
Task.Run(_hook.Run);
321+
}
322+
323+
private void StopHook()
324+
{
325+
_hook.MousePressed -= OnMousePressed;
326+
_hook.MouseReleased -= OnMouseReleased;
327+
_hook.MouseMoved -= _hook_MouseMoved;
328+
329+
try
330+
{
331+
_hook.Dispose();
332+
}
333+
catch (HookException)
334+
{
335+
}
336+
}
337+
321338
private void _hook_MouseMoved(object? sender, MouseHookEventArgs e)
322339
{
323340
_mouse.X = e.Data.X;
@@ -378,6 +395,16 @@ private void MenuItem_Quit_Click(object sender, RoutedEventArgs e)
378395
{
379396
Close();
380397
}
398+
399+
private void ContextMenu_Closed(object sender, RoutedEventArgs e)
400+
{
401+
StartHook();
402+
}
403+
404+
private void ContextMenu_Opened(object sender, RoutedEventArgs e)
405+
{
406+
StopHook();
407+
}
381408
}
382409

383410
public enum WindowMode

0 commit comments

Comments
 (0)