Fix duplicate "Resize with Image Resizer" context menu entries #40036
+65
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes the issue where "Resize with Image Resizer" context menu entries appear twice when right-clicking on image files. The duplicate entries were caused by both the traditional MSI context menu handler and the modern MSIX context menu handler registering and displaying simultaneously.
Root Cause
ImageResizer has two separate context menu implementations:
src/modules/imageresizer/dll/ContextMenuHandler.cpp
) - MSI-based IContextMenu interfacesrc/modules/imageresizer/ImageResizerContextMenu/dllmain.cpp
) - Modern IExplorerCommand interfaceBoth handlers were active simultaneously, causing duplicate menu entries as reported in the issue.
Solution
Following the same pattern as PowerRename, this PR adds an "extended context menu only" setting that allows users to control when the context menu appears:
Changes Made
Backend (C++)
extendedContextMenuOnly
boolean setting with JSON persistenceCMF_EXTENDEDVERBS
flag check when setting is enabledFrontend (C#)
ImageresizerExtendedContextMenuOnly
property with JSON serializationExtendedContextMenuOnly
property with two-way bindingResult
✅ Eliminates duplicate context menu entries completely
✅ Provides user control over context menu behavior (matching PowerRename)
✅ Maintains backward compatibility - default behavior shows context menu normally
✅ Follows established patterns - uses same UI/logic structure as PowerRename
Testing
Created validation script that confirms the logic correctly handles all scenarios:
Fixes #20255.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.