mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-04-17 13:23:04 +10:00
ModernSettings: Use smart pointers
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "ModernSettings.h"
|
#include "ModernSettings.h"
|
||||||
#include "ModernSettingsContextMenu.h"
|
#include "ModernSettingsContextMenu.h"
|
||||||
|
#include "ComHelper.h"
|
||||||
|
|
||||||
#define MENUVERB_OPEN 0
|
#define MENUVERB_OPEN 0
|
||||||
|
|
||||||
@@ -177,13 +178,10 @@ HRESULT CModernSettingsContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
|
|||||||
{
|
{
|
||||||
if (uID == MENUVERB_OPEN && m_pdtobj)
|
if (uID == MENUVERB_OPEN && m_pdtobj)
|
||||||
{
|
{
|
||||||
LPITEMIDLIST pidl;
|
CAbsolutePidl pidl;
|
||||||
hr = SHGetIDListFromObject(m_pdtobj, &pidl);
|
hr = SHGetIDListFromObject(m_pdtobj, &pidl);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
|
||||||
hr = OpenItemByPidl(pidl);
|
hr = OpenItemByPidl(pidl);
|
||||||
ILFree(pidl);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -341,7 +341,7 @@ HRESULT CModernSettingsShellFolder::GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMI
|
|||||||
{
|
{
|
||||||
if (!s.icon.empty())
|
if (!s.icon.empty())
|
||||||
{
|
{
|
||||||
IDefaultExtractIconInit* pdxi;
|
CComPtr<IDefaultExtractIconInit> pdxi;
|
||||||
hr = SHCreateDefaultExtractIcon(IID_PPV_ARGS(&pdxi));
|
hr = SHCreateDefaultExtractIcon(IID_PPV_ARGS(&pdxi));
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
@@ -353,8 +353,6 @@ HRESULT CModernSettingsShellFolder::GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMI
|
|||||||
hr = pdxi->SetNormalIcon(icon_path, location);
|
hr = pdxi->SetNormalIcon(icon_path, location);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
hr = pdxi->QueryInterface(riid, ppv);
|
hr = pdxi->QueryInterface(riid, ppv);
|
||||||
|
|
||||||
pdxi->Release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -368,7 +366,6 @@ HRESULT CModernSettingsShellFolder::GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMI
|
|||||||
extract->SetGlyph(glyph);
|
extract->SetGlyph(glyph);
|
||||||
hr = extract->QueryInterface(riid, ppv);
|
hr = extract->QueryInterface(riid, ppv);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -409,7 +406,7 @@ HRESULT CModernSettingsShellFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, SHGDN
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
WCHAR szDisplayName[MAX_PATH];
|
WCHAR szDisplayName[MAX_PATH];
|
||||||
PWSTR pszThisFolder;
|
CComString pszThisFolder;
|
||||||
hr = SHGetNameFromIDList(m_pidl, (shgdnFlags & SHGDN_FORADDRESSBAR) ? SIGDN_DESKTOPABSOLUTEEDITING : SIGDN_DESKTOPABSOLUTEPARSING, &pszThisFolder);
|
hr = SHGetNameFromIDList(m_pidl, (shgdnFlags & SHGDN_FORADDRESSBAR) ? SIGDN_DESKTOPABSOLUTEEDITING : SIGDN_DESKTOPABSOLUTEPARSING, &pszThisFolder);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
@@ -417,8 +414,6 @@ HRESULT CModernSettingsShellFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, SHGDN
|
|||||||
StringCchCat(szDisplayName, ARRAYSIZE(szDisplayName), L"\\");
|
StringCchCat(szDisplayName, ARRAYSIZE(szDisplayName), L"\\");
|
||||||
StringCchCat(szDisplayName, ARRAYSIZE(szDisplayName), setting.fileName.data());
|
StringCchCat(szDisplayName, ARRAYSIZE(szDisplayName), setting.fileName.data());
|
||||||
|
|
||||||
CoTaskMemFree(pszThisFolder);
|
|
||||||
|
|
||||||
hr = StringToStrRet(szDisplayName, pName);
|
hr = StringToStrRet(szDisplayName, pName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -535,7 +530,7 @@ HRESULT CModernSettingsShellFolder::GetClassID(CLSID* pClassID)
|
|||||||
// IPersistFolder method
|
// IPersistFolder method
|
||||||
HRESULT CModernSettingsShellFolder::Initialize(PCIDLIST_ABSOLUTE pidl)
|
HRESULT CModernSettingsShellFolder::Initialize(PCIDLIST_ABSOLUTE pidl)
|
||||||
{
|
{
|
||||||
m_pidl = ILCloneFull(pidl);
|
m_pidl = pidl;
|
||||||
return m_pidl ? S_OK : E_FAIL;
|
return m_pidl ? S_OK : E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
#include "ComHelper.h"
|
||||||
#include "StartMenuHelper_i.h"
|
#include "StartMenuHelper_i.h"
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
@@ -78,7 +79,7 @@ END_COM_MAP()
|
|||||||
private:
|
private:
|
||||||
std::wstring_view GetColumnDisplayName(PCUITEMID_CHILD pidl, UINT iColumn);
|
std::wstring_view GetColumnDisplayName(PCUITEMID_CHILD pidl, UINT iColumn);
|
||||||
|
|
||||||
PIDLIST_ABSOLUTE m_pidl = nullptr; // where this folder is in the name space
|
CAbsolutePidl m_pidl; // where this folder is in the name space
|
||||||
};
|
};
|
||||||
|
|
||||||
OBJECT_ENTRY_AUTO(__uuidof(ModernSettingsShellFolder), CModernSettingsShellFolder)
|
OBJECT_ENTRY_AUTO(__uuidof(ModernSettingsShellFolder), CModernSettingsShellFolder)
|
||||||
|
|||||||
Reference in New Issue
Block a user