mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[EXPLORER-NEW]
* Fix HMENU leak. [BROWSEUI] * Work around for WM_SETICON not properly returning the old HICON. [SHELL32] * Fix HICON leak. * Nitpick. [WIN32K] * Do not refcount the menus improperly. svn path=/branches/shell-experiments/; revision=64986
This commit is contained in:
parent
8069b8c90d
commit
d07a1dc09a
5 changed files with 15 additions and 7 deletions
|
@ -1023,6 +1023,8 @@ ITrayWindowImpl_TrackCtxMenu(IN OUT ITrayWindowImpl *This,
|
|||
cmdId,
|
||||
pcmContext,
|
||||
Context);
|
||||
|
||||
DestroyMenu(hPopup);
|
||||
}
|
||||
|
||||
return cmdId;
|
||||
|
|
|
@ -1078,15 +1078,18 @@ HRESULT CShellBrowser::BrowseToPath(IShellFolder *newShellFolder,
|
|||
HICON icSmall = ImageList_GetIcon(himlSmall, indexOpen, 0);
|
||||
HICON icLarge = ImageList_GetIcon(himlLarge, indexOpen, 0);
|
||||
|
||||
HICON oldSmall = (HICON)SendMessage(WM_SETICON, ICON_SMALL, reinterpret_cast<LPARAM>(icSmall));
|
||||
HICON oldLarge = (HICON)SendMessage(WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(icLarge));
|
||||
/* Hack to make it possible to release the old icons */
|
||||
/* Something seems to go wrong with WM_SETICON */
|
||||
HICON oldSmall = (HICON)SendMessage(WM_GETICON, ICON_SMALL, 0);
|
||||
HICON oldLarge = (HICON)SendMessage(WM_GETICON, ICON_BIG, 0);
|
||||
|
||||
SendMessage(WM_SETICON, ICON_SMALL, reinterpret_cast<LPARAM>(icSmall));
|
||||
SendMessage(WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(icLarge));
|
||||
|
||||
DestroyIcon(oldSmall);
|
||||
DestroyIcon(oldLarge);
|
||||
}
|
||||
|
||||
// TODO: Update the window icon
|
||||
|
||||
FireCommandStateChangeAll();
|
||||
hResult = UpdateForwardBackState();
|
||||
return S_OK;
|
||||
|
|
|
@ -179,7 +179,10 @@ CNewMenu::SHELLNEW_ITEM *CNewMenu::LoadItem(LPCWSTR pwszExt)
|
|||
pNewItem->pwszExt = _wcsdup(pwszExt);
|
||||
pNewItem->pwszDesc = _wcsdup(fi.szTypeName);
|
||||
if (fi.hIcon)
|
||||
{
|
||||
pNewItem->hBitmap = IconToBitmap(fi.hIcon);
|
||||
DestroyIcon(fi.hIcon);
|
||||
}
|
||||
|
||||
return pNewItem;
|
||||
}
|
||||
|
|
|
@ -984,7 +984,7 @@ LRESULT CDefView::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandl
|
|||
SHFree((LPITEMIDLIST)ntreg.pidl);
|
||||
}
|
||||
|
||||
m_hAccel = LoadAcceleratorsA(shell32_hInstance, MAKEINTRESOURCEA( IDA_SHELLVIEW));
|
||||
m_hAccel = LoadAcceleratorsW(shell32_hInstance, MAKEINTRESOURCEW(IDA_SHELLVIEW));
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -1653,7 +1653,7 @@ PMENU FASTCALL MENU_GetSystemMenu(PWND Window, PMENU Popup)
|
|||
{
|
||||
return NULL;
|
||||
}
|
||||
SysMenu = IntGetMenuObject(hSysMenu);
|
||||
SysMenu = UserGetMenuObject(hSysMenu);
|
||||
if (NULL == SysMenu)
|
||||
{
|
||||
UserDestroyMenu(hSysMenu);
|
||||
|
@ -1684,7 +1684,7 @@ PMENU FASTCALL MENU_GetSystemMenu(PWND Window, PMENU Popup)
|
|||
UserDestroyMenu(hSysMenu);
|
||||
return NULL;
|
||||
}
|
||||
Menu = IntGetMenuObject(hNewMenu);
|
||||
Menu = UserGetMenuObject(hNewMenu);
|
||||
if (!Menu)
|
||||
{
|
||||
IntReleaseMenuObject(SysMenu);
|
||||
|
|
Loading…
Reference in a new issue