-
Notifications
You must be signed in to change notification settings - Fork 6.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Markdown Preview Handler Icon in Windows Status Bar #33491
Comments
Hi I'm an AI powered bot that finds similar issues based off the issue title. Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it. Thank you! Open similar issues:
|
This is very close, but one is for |
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request This PR aims to fix some positioning issues of the form used as preview handler. It fixes the following issues: 1. The floating window, detached from Explorer that sometimes appears: #33491 #27475 #24985 2. The **CoreWebView2 members cannot be accessed after the WebView2 control is disposed** crash: #27276 3. `PowerToys.*.PreviewHandler.exe` process leak ### Repro steps for issue 1 - Navigate through files in a folder invoking their preview handler - Minimize/Restore Explorer quickly (spam WIN+D usually works) - 2 weird issues happen: - Some `PowerToys.*.PreviewHandler.exe` processes are leaked - Some `PowerToys.*.PreviewHandler.exe` are started with a `NULL` `HWND` ![Screenshot 2024-07-27 **200207](https://github.com/user-attachments/assets/5cb6c857-ad93-422a-8c5b-47bd1c492dce) This happens because [IPreviewHandler::DoPreview](https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipreviewhandler-dopreview) is called multiple times and sometimes before calling [IPreviewHandler::SetWindow](https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipreviewhandler-setwindow). When the managed previewer try to set the parent of the form to the `NULL` `HWND`, the desktop window is used instead, resulting in the floating preview window being displayed. Reference: https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setparent#parameters https://github.com/microsoft/PowerToys/blob/5d77874382f55cdf5268b19ebb97ec07727ca78f/src/modules/previewpane/common/controls/FormHandlerControl.cs#L136 ### Repro steps for issue 2 - Preview a file - Restart `explorer.exe` process - Make sure `PowerToys.*.PreviewHandler.exe` is leaked and still running - Preview the same file again - Preview is displayed (another process is launched) - Minimize Explorer What happens here is that the form of the old process have an invalid `HWND` as parent but receive the `SetRect` for some reason. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] **Closes:** #33491 #27475 #24985 #27276 - [ ] **Communication:** I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end user facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- 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 - Don't start preview pane process when `HWND` is `NULL` - Terminate the preview pane process when setting parent fails - Prevent leaking processes closing them when a new preview is requested - Fixed an issue where PDF and SVG previews weren't updated after restoring Explorer - Added some error handling in the `UpdateWindowBounds` method of the managed preview - Terminate the preview pane when the `SetRect` event is received but the parent `HWND` has become invalid <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed - Manually tested all preview panes also using multiple Explorer windows - Validated that when Explorer is minimized/restored the preview is updated - Tested the preview pane resize - Validated that no window, no taskbar icon and no errors appear on both repro steps
Microsoft PowerToys version
0.81.1
Installation method
PowerToys auto-update
Running as admin
Yes
Area(s) with issue?
File Explorer: Preview Pane
Steps to reproduce
Since the latest version of PowerToys, an icon for the Markdown Preview Handler appears in the Windows status bar.
✔️ Expected Behavior
This additional icon should not be present.
❌ Actual Behavior
Other Software
No response
The text was updated successfully, but these errors were encountered: