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: