[USER32] Switch to only one window (Alt+Tab) (#1718)

Fix app switcher (Alt+Tab)'s behavior when there is only one app window. CORE-16176
This commit is contained in:
Katayama Hirofumi MZ 2019-07-07 09:05:10 +09:00 committed by GitHub
parent 28a0aa9ae8
commit c17a8770a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -481,11 +481,13 @@ BOOL ProcessHotKey(VOID)
if (windowCount == 1)
{
selectedWindow = 0;
CompleteSwitch(TRUE);
return TRUE;
MakeWindowActive(windowList[0]);
return FALSE;
}
if (!CreateSwitcherWindow(User32Instance))
return FALSE;
selectedWindow = 1;
TRACE("[ATbot] HotKey Received. Opening window.\n");
@ -610,10 +612,6 @@ LRESULT WINAPI DoAppSwitch( WPARAM wParam, LPARAM lParam )
// Already in the loop.
if (switchdialog || Esc) return 0;
hwndActive = GetActiveWindow();
// Nothing is active so exit.
if (!hwndActive) return 0;
if (lParam == VK_ESCAPE)
{
Esc = TRUE;
@ -636,14 +634,15 @@ LRESULT WINAPI DoAppSwitch( WPARAM wParam, LPARAM lParam )
}
// Capture current active window.
SetCapture( hwndActive );
hwndActive = GetActiveWindow();
if (hwndActive)
SetCapture(hwndActive);
switch (lParam)
{
case VK_TAB:
if( !CreateSwitcherWindow(User32Instance) ) goto Exit;
if( !GetDialogFont() ) goto Exit;
if( !ProcessHotKey() ) goto Exit;
if (!GetDialogFont() || !ProcessHotKey())
goto Exit;
break;
case VK_ESCAPE:
@ -652,6 +651,10 @@ LRESULT WINAPI DoAppSwitch( WPARAM wParam, LPARAM lParam )
default:
goto Exit;
}
if (!hwndActive)
goto Exit;
// Main message loop:
while (1)
{