@@ -280,28 +280,31 @@ private static unsafe void InvokeShowQuickSwitchWindow()
280280 // So we start & stop the timer when we find a file dialog window
281281 /*lock (_currentDialogWindowLock)
282282 {
283- var currentDialogWindowChanged = _currentDialogWindow == null ||
283+ lock (_dialogWindowLock)
284+ {
285+ var currentDialogWindowChanged = _currentDialogWindow == null ||
284286 _currentDialogWindow != _dialogWindow;
285287
286- if (currentDialogWindowChanged)
287- {
288- if (!_moveSizeHook.IsNull)
288+ if (currentDialogWindowChanged)
289289 {
290- PInvoke.UnhookWinEvent(_moveSizeHook);
291- _moveSizeHook = HWINEVENTHOOK.Null;
290+ if (!_moveSizeHook.IsNull)
291+ {
292+ PInvoke.UnhookWinEvent(_moveSizeHook);
293+ _moveSizeHook = HWINEVENTHOOK.Null;
294+ }
295+
296+ // Call MoveSizeCallBack when the window is moved or resized
297+ uint processId;
298+ var threadId = PInvoke.GetWindowThreadProcessId(_dialogWindow.Handle, &processId);
299+ _moveSizeHook = PInvoke.SetWinEventHook(
300+ PInvoke.EVENT_SYSTEM_MOVESIZESTART,
301+ PInvoke.EVENT_SYSTEM_MOVESIZEEND,
302+ PInvoke.GetModuleHandle((PCWSTR)null),
303+ MoveSizeCallBack,
304+ processId,
305+ threadId,
306+ PInvoke.WINEVENT_OUTOFCONTEXT);
292307 }
293-
294- // Call MoveSizeCallBack when the window is moved or resized
295- uint processId;
296- var threadId = PInvoke.GetWindowThreadProcessId(_dialogWindow.Handle, &processId);
297- _moveSizeHook = PInvoke.SetWinEventHook(
298- PInvoke.EVENT_SYSTEM_MOVESIZESTART,
299- PInvoke.EVENT_SYSTEM_MOVESIZEEND,
300- PInvoke.GetModuleHandle((PCWSTR)null),
301- MoveSizeCallBack,
302- processId,
303- threadId,
304- PInvoke.WINEVENT_OUTOFCONTEXT);
305308 }
306309 }*/
307310 }
@@ -637,20 +640,9 @@ private static void NavigateDialogPath(HWND hwnd, Action action = null)
637640 dialogWindow = _dialogWindow ;
638641 }
639642 }
643+ // Then check all dialog windows
640644 if ( dialogWindow == null )
641645 {
642- // Then check current dialog window
643- lock ( _currentDialogWindowLock )
644- {
645- if ( _currentDialogWindow != null && _currentDialogWindow . Handle == hwnd )
646- {
647- dialogWindow = _currentDialogWindow ;
648- }
649- }
650- }
651- if ( dialogWindow == null )
652- {
653- // After that check all dialog windows
654646 foreach ( var dialog in _quickSwitchDialogs )
655647 {
656648 if ( dialog . DialogWindow . Handle == hwnd )
@@ -660,9 +652,9 @@ private static void NavigateDialogPath(HWND hwnd, Action action = null)
660652 }
661653 }
662654 }
655+ // Finally search for the dialog window
663656 if ( dialogWindow == null )
664657 {
665- // Finally search for the dialog window
666658 foreach ( var dialog in _quickSwitchDialogs )
667659 {
668660 if ( dialog . CheckDialogWindow ( hwnd ) )
0 commit comments