5
5
using System . Linq ;
6
6
using System . Runtime . InteropServices ;
7
7
using System . Windows . Forms ;
8
- using System . Windows . Input ;
9
8
using Microsoft . Vbe . Interop ;
10
9
using Rubberduck . Common . Hotkeys ;
11
10
using Rubberduck . Common . WinAPI ;
12
11
using Rubberduck . Settings ;
13
12
using Rubberduck . UI . Command ;
14
- using Rubberduck . UI . Command . Refactorings ;
15
13
using NLog ;
16
- using Rubberduck . UI ;
17
14
18
15
namespace Rubberduck . Common
19
16
{
20
17
public class RubberduckHooks : IRubberduckHooks
21
18
{
22
19
private readonly VBE _vbe ;
23
20
private readonly IntPtr _mainWindowHandle ;
24
- private readonly IntPtr _oldWndPointer ;
25
21
private readonly User32 . WndProc _oldWndProc ;
26
- private User32 . WndProc _newWndProc ;
27
22
private RawInput _rawinput ;
28
- private IRawDevice _kb ;
29
- private IRawDevice _mouse ;
30
23
private readonly IGeneralConfigService _config ;
31
24
private readonly IEnumerable < CommandBase > _commands ;
32
25
private readonly IList < IAttachable > _hooks = new List < IAttachable > ( ) ;
@@ -37,9 +30,8 @@ public RubberduckHooks(VBE vbe, IGeneralConfigService config, IEnumerable<Comman
37
30
_vbe = vbe ;
38
31
_mainWindowHandle = ( IntPtr ) vbe . MainWindow . HWnd ;
39
32
_oldWndProc = WindowProc ;
40
- _newWndProc = WindowProc ;
41
- _oldWndPointer = User32 . SetWindowLong ( _mainWindowHandle , ( int ) WindowLongFlags . GWL_WNDPROC , _newWndProc ) ;
42
- _oldWndProc = ( User32 . WndProc ) Marshal . GetDelegateForFunctionPointer ( _oldWndPointer , typeof ( User32 . WndProc ) ) ;
33
+ var oldWndPointer = User32 . SetWindowLong ( _mainWindowHandle , ( int ) WindowLongFlags . GWL_WNDPROC , WindowProc ) ;
34
+ _oldWndProc = ( User32 . WndProc ) Marshal . GetDelegateForFunctionPointer ( oldWndPointer , typeof ( User32 . WndProc ) ) ;
43
35
44
36
_commands = commands ;
45
37
_config = config ;
@@ -63,12 +55,10 @@ public void HookHotkeys()
63
55
var kb = ( RawKeyboard ) _rawinput . CreateKeyboard ( ) ;
64
56
_rawinput . AddDevice ( kb ) ;
65
57
kb . RawKeyInputReceived += Keyboard_RawKeyboardInputReceived ;
66
- _kb = kb ;
67
58
68
59
var mouse = ( RawMouse ) _rawinput . CreateMouse ( ) ;
69
60
_rawinput . AddDevice ( mouse ) ;
70
61
mouse . RawMouseInputReceived += Mouse_RawMouseInputReceived ;
71
- _mouse = mouse ;
72
62
73
63
foreach ( var hotkey in settings . Settings . Where ( hotkey => hotkey . IsEnabled ) )
74
64
{
@@ -175,7 +165,7 @@ public void Detach()
175
165
private void hook_MessageReceived ( object sender , HookEventArgs e )
176
166
{
177
167
var hotkey = sender as IHotkey ;
178
- if ( hotkey != null )
168
+ if ( hotkey != null && hotkey . Command . CanExecute ( null ) )
179
169
{
180
170
hotkey . Command . Execute ( null ) ;
181
171
return ;
0 commit comments