mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
[PowerRename][ImageResizer]Fallback for tier 1 menus (#19195)
* [PowerRename][ImageResizer]fallback for tier 1 menus * Simplify logic
This commit is contained in:
@@ -9,4 +9,5 @@ namespace ImageResizerConstants
|
|||||||
// Name of the ImageResizer save folder.
|
// Name of the ImageResizer save folder.
|
||||||
inline const std::wstring ModuleOldSaveFolderKey = L"ImageResizer";
|
inline const std::wstring ModuleOldSaveFolderKey = L"ImageResizer";
|
||||||
inline const std::wstring ModuleSaveFolderKey = L"Image Resizer";
|
inline const std::wstring ModuleSaveFolderKey = L"Image Resizer";
|
||||||
|
inline const std::wstring ModulePackageDisplayName = L"ImageResizerContextMenu";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "ContextMenuHandler.h"
|
#include "ContextMenuHandler.h"
|
||||||
|
#include <ImageResizerConstants.h>
|
||||||
|
|
||||||
#include <Settings.h>
|
#include <Settings.h>
|
||||||
#include <trace.h>
|
#include <trace.h>
|
||||||
@@ -63,17 +64,15 @@ HRESULT CContextMenuHandler::Initialize(_In_opt_ PCIDLIST_ABSOLUTE pidlFolder, _
|
|||||||
|
|
||||||
HRESULT CContextMenuHandler::QueryContextMenu(_In_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
|
HRESULT CContextMenuHandler::QueryContextMenu(_In_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
|
||||||
{
|
{
|
||||||
if (package::IsWin11OrGreater())
|
if (uFlags & CMF_DEFAULTONLY)
|
||||||
|
return S_OK;
|
||||||
|
|
||||||
|
if (!CSettingsInstance().GetEnabled())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
if (uFlags & CMF_DEFAULTONLY)
|
if (package::IsWin11OrGreater() && package::IsPackageRegistered(ImageResizerConstants::ModulePackageDisplayName))
|
||||||
{
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
if (!CSettingsInstance().GetEnabled())
|
|
||||||
{
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
|
||||||
// NB: We just check the first item. We could iterate through more if the first one doesn't meet the criteria
|
// NB: We just check the first item. We could iterate through more if the first one doesn't meet the criteria
|
||||||
HDropIterator i(m_pdtobj);
|
HDropIterator i(m_pdtobj);
|
||||||
i.First();
|
i.First();
|
||||||
|
|||||||
@@ -102,8 +102,7 @@ public:
|
|||||||
std::wstring path = get_module_folderpath(g_hInst_imageResizer);
|
std::wstring path = get_module_folderpath(g_hInst_imageResizer);
|
||||||
std::wstring packageUri = path + L"\\ImageResizerContextMenuPackage.msix";
|
std::wstring packageUri = path + L"\\ImageResizerContextMenuPackage.msix";
|
||||||
|
|
||||||
std::wstring packageDisplayName{ L"ImageResizerContextMenu" };
|
if (!package::IsPackageRegistered(ImageResizerConstants::ModulePackageDisplayName))
|
||||||
if (!package::IsPackageRegistered(packageDisplayName))
|
|
||||||
{
|
{
|
||||||
package::RegisterSparsePackage(path, packageUri);
|
package::RegisterSparsePackage(path, packageUri);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,4 +5,5 @@ namespace PowerRenameConstants
|
|||||||
{
|
{
|
||||||
// Name of the powertoy module.
|
// Name of the powertoy module.
|
||||||
inline const std::wstring ModuleKey = L"PowerRename";
|
inline const std::wstring ModuleKey = L"PowerRename";
|
||||||
|
inline const std::wstring ModulePackageDisplayName = L"PowerRenameContextMenu";
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "PowerRenameExt.h"
|
#include "PowerRenameExt.h"
|
||||||
|
#include "PowerRenameConstants.h"
|
||||||
#include <trace.h>
|
#include <trace.h>
|
||||||
#include <Helpers.h>
|
#include <Helpers.h>
|
||||||
#include <common/themes/icon_helpers.h>
|
#include <common/themes/icon_helpers.h>
|
||||||
@@ -64,29 +65,17 @@ HRESULT CPowerRenameMenu::QueryContextMenu(HMENU hMenu, UINT index, UINT uIDFirs
|
|||||||
if (!CSettingsInstance().GetEnabled())
|
if (!CSettingsInstance().GetEnabled())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
// Win11 context menu can't distinguish between extended and default menu, so use this one
|
|
||||||
if (package::IsWin11OrGreater())
|
|
||||||
{
|
|
||||||
if (CSettingsInstance().GetExtendedContextMenuOnly() && (uFlags & CMF_EXTENDEDVERBS))
|
|
||||||
{
|
|
||||||
// continue
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Check if we should only be on the extended context menu
|
|
||||||
if (CSettingsInstance().GetExtendedContextMenuOnly() && (!(uFlags & CMF_EXTENDEDVERBS)))
|
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if at least one of the selected items is actually renamable.
|
// Check if at least one of the selected items is actually renamable.
|
||||||
if (!DataObjectContainsRenamableItem(m_spdo))
|
if (!DataObjectContainsRenamableItem(m_spdo))
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
|
if (package::IsWin11OrGreater() && package::IsPackageRegistered(PowerRenameConstants::ModulePackageDisplayName))
|
||||||
|
return E_FAIL;
|
||||||
|
|
||||||
|
// Check if we should only be on the extended context menu
|
||||||
|
if (CSettingsInstance().GetExtendedContextMenuOnly() && (!(uFlags & CMF_EXTENDEDVERBS)))
|
||||||
|
return E_FAIL;
|
||||||
|
|
||||||
HRESULT hr = E_UNEXPECTED;
|
HRESULT hr = E_UNEXPECTED;
|
||||||
if (m_spdo && !(uFlags & (CMF_DEFAULTONLY | CMF_VERBSONLY | CMF_OPTIMIZEFORINVOKE)))
|
if (m_spdo && !(uFlags & (CMF_DEFAULTONLY | CMF_VERBSONLY | CMF_OPTIMIZEFORINVOKE)))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -193,8 +193,7 @@ public:
|
|||||||
std::wstring path = get_module_folderpath(g_hInst);
|
std::wstring path = get_module_folderpath(g_hInst);
|
||||||
std::wstring packageUri = path + L"\\PowerRenameContextMenuPackage.msix";
|
std::wstring packageUri = path + L"\\PowerRenameContextMenuPackage.msix";
|
||||||
|
|
||||||
std::wstring packageDisplayName{ L"PowerRenameContextMenu" };
|
if (!package::IsPackageRegistered(PowerRenameConstants::ModulePackageDisplayName))
|
||||||
if (!package::IsPackageRegistered(packageDisplayName))
|
|
||||||
{
|
{
|
||||||
package::RegisterSparsePackage(path, packageUri);
|
package::RegisterSparsePackage(path, packageUri);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user