From 0252c789972418e2f1e1c88fa1c04fc2afbfcb38 Mon Sep 17 00:00:00 2001 From: Ethan Balakumar <76022348+etbala@users.noreply.github.com> Date: Fri, 27 Mar 2026 16:48:01 -0500 Subject: [PATCH] Terminal receives focus on drag n drop (#20003) ### Summary Updates terminal to gain foreground focus when a user drags and drops a file into the terminal. ### Changes Updates the `DragDropHandler` to call `SetForegroundWindow`. ### Validation * Built and deployed locally * Manually verified terminal gains focus when dragging and dropping Closes #19934 (cherry picked from commit a1a43a4ff584e471a296ee3fc47f34e6e486503d) Service-Card-Id: PVTI_lADOAF3p4s4BQX0-zgpBND8 Service-Version: 1.25 --- src/cascadia/TerminalControl/TermControl.cpp | 5 +++++ src/interactivity/win32/windowproc.cpp | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/cascadia/TerminalControl/TermControl.cpp b/src/cascadia/TerminalControl/TermControl.cpp index f800cf1a29..c62549c6b6 100644 --- a/src/cascadia/TerminalControl/TermControl.cpp +++ b/src/cascadia/TerminalControl/TermControl.cpp @@ -3088,6 +3088,11 @@ namespace winrt::Microsoft::Terminal::Control::implementation co_return; } + if (const auto hwnd = reinterpret_cast(OwningHwnd())) + { + SetForegroundWindow(hwnd); + } + const auto weak = get_weak(); if (e.DataView().Contains(StandardDataFormats::ApplicationLink())) diff --git a/src/interactivity/win32/windowproc.cpp b/src/interactivity/win32/windowproc.cpp index 35ef5fef4e..a4f46c29ec 100644 --- a/src/interactivity/win32/windowproc.cpp +++ b/src/interactivity/win32/windowproc.cpp @@ -951,6 +951,11 @@ LRESULT Window::_HandleGetDpiScaledSize(UINT dpiNew, _Inout_ SIZE* pSizeNew) con // - void Window::_HandleDrop(const WPARAM wParam) const { + if (const auto hwnd = GetWindowHandle()) + { + SetForegroundWindow(hwnd); + } + const auto drop = reinterpret_cast(wParam); Clipboard::Instance().PasteDrop(drop); DragFinish(drop);