Skip to content

Commit e887b3b

Browse files
[PowerRename][ImageResizer]Fallback for tier 1 menus (#19195)
* [PowerRename][ImageResizer]fallback for tier 1 menus * Simplify logic
1 parent d4b62d8 commit e887b3b

File tree

6 files changed

+18
-30
lines changed

6 files changed

+18
-30
lines changed

src/modules/imageresizer/ImageResizerLib/ImageResizerConstants.h

+1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ namespace ImageResizerConstants
99
// Name of the ImageResizer save folder.
1010
inline const std::wstring ModuleOldSaveFolderKey = L"ImageResizer";
1111
inline const std::wstring ModuleSaveFolderKey = L"Image Resizer";
12+
inline const std::wstring ModulePackageDisplayName = L"ImageResizerContextMenu";
1213
}

src/modules/imageresizer/dll/ContextMenuHandler.cpp

+6-7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include "pch.h"
44
#include "ContextMenuHandler.h"
5+
#include <ImageResizerConstants.h>
56

67
#include <Settings.h>
78
#include <trace.h>
@@ -63,17 +64,15 @@ HRESULT CContextMenuHandler::Initialize(_In_opt_ PCIDLIST_ABSOLUTE pidlFolder, _
6364

6465
HRESULT CContextMenuHandler::QueryContextMenu(_In_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
6566
{
66-
if (package::IsWin11OrGreater())
67-
return E_FAIL;
68-
6967
if (uFlags & CMF_DEFAULTONLY)
70-
{
7168
return S_OK;
72-
}
69+
7370
if (!CSettingsInstance().GetEnabled())
74-
{
7571
return E_FAIL;
76-
}
72+
73+
if (package::IsWin11OrGreater() && package::IsPackageRegistered(ImageResizerConstants::ModulePackageDisplayName))
74+
return E_FAIL;
75+
7776
// NB: We just check the first item. We could iterate through more if the first one doesn't meet the criteria
7877
HDropIterator i(m_pdtobj);
7978
i.First();

src/modules/imageresizer/dll/dllmain.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ class ImageResizerModule : public PowertoyModuleIface
102102
std::wstring path = get_module_folderpath(g_hInst_imageResizer);
103103
std::wstring packageUri = path + L"\\ImageResizerContextMenuPackage.msix";
104104

105-
std::wstring packageDisplayName{ L"ImageResizerContextMenu" };
106-
if (!package::IsPackageRegistered(packageDisplayName))
105+
if (!package::IsPackageRegistered(ImageResizerConstants::ModulePackageDisplayName))
107106
{
108107
package::RegisterSparsePackage(path, packageUri);
109108
}

src/modules/powerrename/dll/PowerRenameConstants.h

+1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ namespace PowerRenameConstants
55
{
66
// Name of the powertoy module.
77
inline const std::wstring ModuleKey = L"PowerRename";
8+
inline const std::wstring ModulePackageDisplayName = L"PowerRenameContextMenu";
89
}

src/modules/powerrename/dll/PowerRenameExt.cpp

+8-19
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "pch.h"
22
#include "PowerRenameExt.h"
3+
#include "PowerRenameConstants.h"
34
#include <trace.h>
45
#include <Helpers.h>
56
#include <common/themes/icon_helpers.h>
@@ -64,29 +65,17 @@ HRESULT CPowerRenameMenu::QueryContextMenu(HMENU hMenu, UINT index, UINT uIDFirs
6465
if (!CSettingsInstance().GetEnabled())
6566
return E_FAIL;
6667

67-
// Win11 context menu can't distinguish between extended and default menu, so use this one
68-
if (package::IsWin11OrGreater())
69-
{
70-
if (CSettingsInstance().GetExtendedContextMenuOnly() && (uFlags & CMF_EXTENDEDVERBS))
71-
{
72-
// continue
73-
}
74-
else
75-
{
76-
return E_FAIL;
77-
}
78-
}
79-
else
80-
{
81-
// Check if we should only be on the extended context menu
82-
if (CSettingsInstance().GetExtendedContextMenuOnly() && (!(uFlags & CMF_EXTENDEDVERBS)))
83-
return E_FAIL;
84-
}
85-
8668
// Check if at least one of the selected items is actually renamable.
8769
if (!DataObjectContainsRenamableItem(m_spdo))
8870
return E_FAIL;
8971

72+
if (package::IsWin11OrGreater() && package::IsPackageRegistered(PowerRenameConstants::ModulePackageDisplayName))
73+
return E_FAIL;
74+
75+
// Check if we should only be on the extended context menu
76+
if (CSettingsInstance().GetExtendedContextMenuOnly() && (!(uFlags & CMF_EXTENDEDVERBS)))
77+
return E_FAIL;
78+
9079
HRESULT hr = E_UNEXPECTED;
9180
if (m_spdo && !(uFlags & (CMF_DEFAULTONLY | CMF_VERBSONLY | CMF_OPTIMIZEFORINVOKE)))
9281
{

src/modules/powerrename/dll/dllmain.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,7 @@ class PowerRenameModule : public PowertoyModuleIface
193193
std::wstring path = get_module_folderpath(g_hInst);
194194
std::wstring packageUri = path + L"\\PowerRenameContextMenuPackage.msix";
195195

196-
std::wstring packageDisplayName{ L"PowerRenameContextMenu" };
197-
if (!package::IsPackageRegistered(packageDisplayName))
196+
if (!package::IsPackageRegistered(PowerRenameConstants::ModulePackageDisplayName))
198197
{
199198
package::RegisterSparsePackage(path, packageUri);
200199
}

0 commit comments

Comments
 (0)