From 04428caab4ed8ec6ec60fd95e324aaedf88cccc3 Mon Sep 17 00:00:00 2001 From: Mike Griese <migrie@microsoft.com> Date: Wed, 28 Aug 2024 12:44:17 -0500 Subject: [PATCH 1/6] Handle WM_ENABLE too this is what Evan said to do --- src/cascadia/WindowsTerminal/IslandWindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cascadia/WindowsTerminal/IslandWindow.cpp b/src/cascadia/WindowsTerminal/IslandWindow.cpp index 2bfe9d1dd96..cff1ceeee82 100644 --- a/src/cascadia/WindowsTerminal/IslandWindow.cpp +++ b/src/cascadia/WindowsTerminal/IslandWindow.cpp @@ -510,6 +510,7 @@ long IslandWindow::_calculateTotalSize(const bool isWidth, const long clientSize _HandleCreateWindow(wparam, lparam); return 0; } + case WM_ENABLE: case WM_SETFOCUS: { if (_interopWindowHandle != nullptr) From 222bae365a1e007c7913c627db99e778b50829bf Mon Sep 17 00:00:00 2001 From: Mike Griese <migrie@microsoft.com> Date: Wed, 28 Aug 2024 13:24:19 -0500 Subject: [PATCH 2/6] Try something similar --- src/cascadia/WindowsTerminal/IslandWindow.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/cascadia/WindowsTerminal/IslandWindow.cpp b/src/cascadia/WindowsTerminal/IslandWindow.cpp index cff1ceeee82..e0b13ded48f 100644 --- a/src/cascadia/WindowsTerminal/IslandWindow.cpp +++ b/src/cascadia/WindowsTerminal/IslandWindow.cpp @@ -511,6 +511,14 @@ long IslandWindow::_calculateTotalSize(const bool isWidth, const long clientSize return 0; } case WM_ENABLE: + { + if (_interopWindowHandle != nullptr) + { + // send focus to the child window + SetFocus(_interopWindowHandle); + } + break; + } case WM_SETFOCUS: { if (_interopWindowHandle != nullptr) From 83ea10cf72dca68fb00529b5dc557da27e64c5fa Mon Sep 17 00:00:00 2001 From: Mike Griese <migrie@microsoft.com> Date: Wed, 28 Aug 2024 13:51:19 -0500 Subject: [PATCH 3/6] test --- src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp b/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp index 73a2ea89443..77b0da079c4 100644 --- a/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp +++ b/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp @@ -171,6 +171,7 @@ LRESULT NonClientIslandWindow::_InputSinkMessageHandler(UINT const message, // is absolutely critical to making sure Snap Layouts (GH#9443) works! return _dragBarNcHitTest({ GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam) }); } + break; case WM_NCMOUSEMOVE: From 0df3e0a0d37e47f77f85f19758bf0fe64ff2beba Mon Sep 17 00:00:00 2001 From: Mike Griese <migrie@microsoft.com> Date: Thu, 29 Aug 2024 06:29:50 -0500 Subject: [PATCH 4/6] Another thing to try --- src/interactivity/base/InteractivityFactory.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/interactivity/base/InteractivityFactory.cpp b/src/interactivity/base/InteractivityFactory.cpp index 0af2cb76d11..326813d29ea 100644 --- a/src/interactivity/base/InteractivityFactory.cpp +++ b/src/interactivity/base/InteractivityFactory.cpp @@ -463,6 +463,7 @@ using namespace Microsoft::Console::Interactivity; { _WritePseudoWindowCallback((bool)wParam); } + break; } case WM_GETOBJECT: { @@ -476,6 +477,15 @@ using namespace Microsoft::Console::Interactivity; } return 0; } + case WM_ACTIVATE: + { + if (const auto ownerHwnd{ ::GetAncestor(hWnd, GA_ROOTOWNER) }) + { + SetFocus(ownerHwnd); + return 0; + } + break; + } } // If we get this far, call the default window proc return DefWindowProcW(hWnd, Message, wParam, lParam); From 6aa60aa27e5dff195cf8a1605793076d556203f6 Mon Sep 17 00:00:00 2001 From: Mike Griese <migrie@microsoft.com> Date: Thu, 29 Aug 2024 15:41:11 -0500 Subject: [PATCH 5/6] Should we handle this? --- src/interactivity/base/InteractivityFactory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interactivity/base/InteractivityFactory.cpp b/src/interactivity/base/InteractivityFactory.cpp index 326813d29ea..862b4db514d 100644 --- a/src/interactivity/base/InteractivityFactory.cpp +++ b/src/interactivity/base/InteractivityFactory.cpp @@ -463,7 +463,7 @@ using namespace Microsoft::Console::Interactivity; { _WritePseudoWindowCallback((bool)wParam); } - break; + return 0; } case WM_GETOBJECT: { From 9bece0b13069ef701b354fe28a4f579dbc39ee79 Mon Sep 17 00:00:00 2001 From: Mike Griese <migrie@microsoft.com> Date: Thu, 29 Aug 2024 15:44:55 -0500 Subject: [PATCH 6/6] whitespace --- src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp b/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp index 77b0da079c4..73a2ea89443 100644 --- a/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp +++ b/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp @@ -171,7 +171,6 @@ LRESULT NonClientIslandWindow::_InputSinkMessageHandler(UINT const message, // is absolutely critical to making sure Snap Layouts (GH#9443) works! return _dragBarNcHitTest({ GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam) }); } - break; case WM_NCMOUSEMOVE: