mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-06 03:07:04 +02:00
CmdPal: Improve error handling and logging in activation process (#41344)
## Summary of the Pull Request This PR makes passing arguments from a new instance to the existing one more resilient: - Fixes situations where `x-cmdpal://` links might not work as expected. Instead of performing the intended action (e.g., `x-cmdpal://background` or `x-cmdpal://settings`), they could incorrectly just summon the main window. - Refactors the `AppInstance.Activated` handler to be synchronous. - The handler blocks `AppInstance.RedirectActivationToAsync` in the caller. - If it runs asynchronously (or offloads work to another thread, including the UI thread), the calling instance may exit too soon, preventing the activation arguments from being read. - Adds a timeout and ensures the semaphore is always released so the application can exit gracefully under all conditions. - Adjusts handling for cases where the source application exits before passing arguments by lowering the log severity to **Warning** and providing a clearer, more descriptive message. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** yop - [x] **Localization:** no need - [x] **Dev docs:** no need - [x] **New binaries:** none - [x] **Documentation updated:** nope <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Tested with x-cmdpal://settings under normal conditions, and with CmdPal deliberately slowed down to take its sweet time handling the arguments (so the calling instance times out).
This commit is contained in:
@@ -85,7 +85,7 @@ public partial class App : Application
|
||||
AppWindow = new MainWindow();
|
||||
|
||||
var activatedEventArgs = Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().GetActivatedEventArgs();
|
||||
((MainWindow)AppWindow).HandleLaunch(activatedEventArgs);
|
||||
((MainWindow)AppWindow).HandleLaunchNonUI(activatedEventArgs);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user