ModernSettings: Use smart pointers

This commit is contained in:
ge0rdi
2020-08-31 20:11:50 +02:00
parent e210b4a65a
commit 9752afbebc
3 changed files with 7 additions and 13 deletions

View File

@@ -5,6 +5,7 @@
#include "stdafx.h"
#include "ModernSettings.h"
#include "ModernSettingsContextMenu.h"
#include "ComHelper.h"
#define MENUVERB_OPEN 0
@@ -177,13 +178,10 @@ HRESULT CModernSettingsContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
{
if (uID == MENUVERB_OPEN && m_pdtobj)
{
LPITEMIDLIST pidl;
CAbsolutePidl pidl;
hr = SHGetIDListFromObject(m_pdtobj, &pidl);
if (SUCCEEDED(hr))
{
hr = OpenItemByPidl(pidl);
ILFree(pidl);
}
}
}

View File

@@ -341,7 +341,7 @@ HRESULT CModernSettingsShellFolder::GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMI
{
if (!s.icon.empty())
{
IDefaultExtractIconInit* pdxi;
CComPtr<IDefaultExtractIconInit> pdxi;
hr = SHCreateDefaultExtractIcon(IID_PPV_ARGS(&pdxi));
if (SUCCEEDED(hr))
{
@@ -353,8 +353,6 @@ HRESULT CModernSettingsShellFolder::GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMI
hr = pdxi->SetNormalIcon(icon_path, location);
if (SUCCEEDED(hr))
hr = pdxi->QueryInterface(riid, ppv);
pdxi->Release();
}
}
else
@@ -368,7 +366,6 @@ HRESULT CModernSettingsShellFolder::GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMI
extract->SetGlyph(glyph);
hr = extract->QueryInterface(riid, ppv);
}
}
}
}
@@ -409,7 +406,7 @@ HRESULT CModernSettingsShellFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, SHGDN
else
{
WCHAR szDisplayName[MAX_PATH];
PWSTR pszThisFolder;
CComString pszThisFolder;
hr = SHGetNameFromIDList(m_pidl, (shgdnFlags & SHGDN_FORADDRESSBAR) ? SIGDN_DESKTOPABSOLUTEEDITING : SIGDN_DESKTOPABSOLUTEPARSING, &pszThisFolder);
if (SUCCEEDED(hr))
{
@@ -417,8 +414,6 @@ HRESULT CModernSettingsShellFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, SHGDN
StringCchCat(szDisplayName, ARRAYSIZE(szDisplayName), L"\\");
StringCchCat(szDisplayName, ARRAYSIZE(szDisplayName), setting.fileName.data());
CoTaskMemFree(pszThisFolder);
hr = StringToStrRet(szDisplayName, pName);
}
}
@@ -535,7 +530,7 @@ HRESULT CModernSettingsShellFolder::GetClassID(CLSID* pClassID)
// IPersistFolder method
HRESULT CModernSettingsShellFolder::Initialize(PCIDLIST_ABSOLUTE pidl)
{
m_pidl = ILCloneFull(pidl);
m_pidl = pidl;
return m_pidl ? S_OK : E_FAIL;
}

View File

@@ -3,6 +3,7 @@
#pragma once
#include "resource.h"
#include "ComHelper.h"
#include "StartMenuHelper_i.h"
#include <shlobj.h>
#include <string>
@@ -78,7 +79,7 @@ END_COM_MAP()
private:
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)