Compare commits

...

2 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
8e25ecf77e Fix CmdPal failing to show from Quick Access when running in background
When CmdPal is in the background, SetForegroundWindow fails without the
foreground lock. Replace it with StealForeground() which uses
AttachThreadInput to reliably bring the window to the front.

Agent-Logs-Url: https://github.com/microsoft/PowerToys/sessions/3f47281c-b02a-4622-8b0f-60c7108d8961

Co-authored-by: MuyuanMS <116717757+MuyuanMS@users.noreply.github.com>
2026-04-29 09:41:21 +00:00
copilot-swe-agent[bot]
8dcc3f134b Initial plan 2026-04-29 08:50:02 +00:00

View File

@@ -655,7 +655,15 @@ public sealed partial class MainWindow : WindowEx,
// Once we're done, uncloak to avoid all animations
Uncloak();
PInvoke.SetForegroundWindow(hwnd);
// Use StealForeground to reliably bring the window to the foreground.
// A plain SetForegroundWindow call can fail when the process does not
// hold the foreground lock (e.g. when summoned via Quick Access or a
// named-event trigger while another app is in the foreground).
// StealForeground uses AttachThreadInput to temporarily borrow the
// foreground thread's input context, which gives us permission to call
// SetForegroundWindow regardless of which process currently owns the
// foreground.
StealForeground();
PInvoke.SetActiveWindow(hwnd);
// Push our window to the top of the Z-order and make it the topmost, so that it appears above all other windows.