Author: gedmurphy
Date: Wed May 25 20:36:21 2011
New Revision: 51910
URL:
http://svn.reactos.org/svn/reactos?rev=51910&view=rev
Log:
[SHELL32_NEW]
- Merge 50899, 50941, 50957, 50964, 51053
- Check the correct pidl instead of the free one
- Found by the amazing DPH!
- Return the icon index, not the icon id
-Fix missing "Open" menu entry on right click for All Users desktop shortcuts.
Modified:
branches/shell32_new-bringup/dll/win32/shell32/clipboard.cpp
branches/shell32_new-bringup/dll/win32/shell32/dialogs.cpp
branches/shell32_new-bringup/dll/win32/shell32/iconcache.cpp
branches/shell32_new-bringup/dll/win32/shell32/she_ocmenu.cpp
branches/shell32_new-bringup/dll/win32/shell32/shlview.cpp
Modified: branches/shell32_new-bringup/dll/win32/shell32/clipboard.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/shell32_new-bringup/dll/win32/s…
==============================================================================
--- branches/shell32_new-bringup/dll/win32/shell32/clipboard.cpp [iso-8859-1] (original)
+++ branches/shell32_new-bringup/dll/win32/shell32/clipboard.cpp [iso-8859-1] Wed May 25
20:36:21 2011
@@ -47,26 +47,26 @@
HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
{
UINT i;
- int rootlen = 0,size = 0;
- WCHAR wszRootPath[MAX_PATH];
+ int size = 0;
WCHAR wszFileName[MAX_PATH];
HGLOBAL hGlobal;
DROPFILES *pDropFiles;
int offset;
-
- TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
+ LPITEMIDLIST *pidls;
+
+ TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
+
+ pidls = (LPITEMIDLIST *)HeapAlloc(GetProcessHeap(), 0, cidl * sizeof *pidls);
+ if (!pidls) return NULL;
/* get the size needed */
size = sizeof(DROPFILES);
- SHGetPathFromIDListW(pidlRoot, wszRootPath);
- PathAddBackslashW(wszRootPath);
- rootlen = wcslen(wszRootPath);
-
for (i=0; i<cidl;i++)
{
- _ILSimpleGetTextW(apidl[i], wszFileName, MAX_PATH);
- size += (rootlen + wcslen(wszFileName) + 1) * sizeof(WCHAR);
+ pidls[i] = ILCombine(pidlRoot, apidl[i]);
+ SHGetPathFromIDListW(pidls[i], wszFileName);
+ size += (wcslen(wszFileName) + 1) * sizeof(WCHAR);
}
size += sizeof(WCHAR);
@@ -80,18 +80,18 @@
pDropFiles->pFiles = offset * sizeof(WCHAR);
pDropFiles->fWide = TRUE;
- wcscpy(wszFileName, wszRootPath);
-
for (i=0; i<cidl;i++)
{
-
- _ILSimpleGetTextW(apidl[i], wszFileName + rootlen, MAX_PATH - rootlen);
+ SHGetPathFromIDListW(pidls[i], wszFileName);
wcscpy(((WCHAR*)pDropFiles)+offset, wszFileName);
offset += wcslen(wszFileName) + 1;
+ ILFree(pidls[i]);
}
((WCHAR*)pDropFiles)[offset] = 0;
GlobalUnlock(hGlobal);
+
+ HeapFree(GetProcessHeap(), 0, pidls);
return hGlobal;
}
Modified: branches/shell32_new-bringup/dll/win32/shell32/dialogs.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/shell32_new-bringup/dll/win32/s…
==============================================================================
--- branches/shell32_new-bringup/dll/win32/shell32/dialogs.cpp [iso-8859-1] (original)
+++ branches/shell32_new-bringup/dll/win32/shell32/dialogs.cpp [iso-8859-1] Wed May 25
20:36:21 2011
@@ -63,7 +63,7 @@
PPICK_ICON_CONTEXT pIconContext = (PPICK_ICON_CONTEXT)lParam;
if (IS_INTRESOURCE(lpszName))
- swprintf(szName, L"%u\n", lpszName);
+ swprintf(szName, L"%u", lpszName);
else
wcscpy(szName, (WCHAR*)lpszName);
@@ -105,7 +105,7 @@
LPMEASUREITEMSTRUCT lpmis;
LPDRAWITEMSTRUCT lpdis;
HICON hIcon;
- INT index;
+ INT index, count;
WCHAR szText[MAX_PATH], szTitle[100], szFilter[100];
OPENFILENAMEW ofn = {0};
@@ -123,18 +123,21 @@
else
SendDlgItemMessageW(hwndDlg, IDC_EDIT_PATH, WM_SETTEXT, 0,
(LPARAM)pIconContext->szName);
- swprintf(szText, L"%u", pIconContext->Index);
- index = SendMessageW(pIconContext->hDlgCtrl, LB_FINDSTRING, -1,
(LPARAM)szText);
- if (index != LB_ERR)
- SendMessageW(pIconContext->hDlgCtrl, LB_SETCURSEL, index, 0);
+ count = SendMessage(pIconContext->hDlgCtrl, LB_GETCOUNT, 0, 0);
+ if (count != LB_ERR)
+ {
+ if (count > pIconContext->Index)
+ SendMessageW(pIconContext->hDlgCtrl, LB_SETCURSEL,
pIconContext->Index, 0);
+ else
+ SendMessageW(pIconContext->hDlgCtrl, LB_SETCURSEL, 0, 0);
+ }
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
index = SendMessageW(pIconContext->hDlgCtrl, LB_GETCURSEL, 0, 0);
- SendMessageW(pIconContext->hDlgCtrl, LB_GETTEXT, index, (LPARAM)szText);
- pIconContext->Index = _wtoi(szText);
+ pIconContext->Index = index;
SendDlgItemMessageW(hwndDlg, IDC_EDIT_PATH, WM_GETTEXT, MAX_PATH,
(LPARAM)pIconContext->szName);
DestroyIconList(pIconContext->hDlgCtrl);
EndDialog(hwndDlg, 1);
Modified: branches/shell32_new-bringup/dll/win32/shell32/iconcache.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/shell32_new-bringup/dll/win32/s…
==============================================================================
--- branches/shell32_new-bringup/dll/win32/shell32/iconcache.cpp [iso-8859-1] (original)
+++ branches/shell32_new-bringup/dll/win32/shell32/iconcache.cpp [iso-8859-1] Wed May 25
20:36:21 2011
@@ -183,8 +183,8 @@
if (NULL == SelectObject(ShortcutDC, ShortcutIconInfo.hbmColor)) goto fail;
if (!MaskBlt(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight,
ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight,
- ShortcutDC, 0, 0, ShortcutIconInfo.hbmMask, 0, 0,
- MAKEROP4(SRCCOPY, 0xAA0000)))
+ ShortcutDC, 0, 0, ShortcutIconInfo.hbmMask, 0, 0,
+ MAKEROP4(0xAA0000, SRCCOPY)))
{
goto fail;
}
Modified: branches/shell32_new-bringup/dll/win32/shell32/she_ocmenu.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/shell32_new-bringup/dll/win32/s…
==============================================================================
--- branches/shell32_new-bringup/dll/win32/shell32/she_ocmenu.cpp [iso-8859-1] (original)
+++ branches/shell32_new-bringup/dll/win32/shell32/she_ocmenu.cpp [iso-8859-1] Wed May 25
20:36:21 2011
@@ -1059,8 +1059,8 @@
ERR("no mem\n");
return E_OUTOFMEMORY;
}
- if (_ILIsDesktop(pidl_child) || _ILIsMyDocuments(pidl_child) ||
_ILIsControlPanel(pidl_child) || _ILIsNetHood(pidl_child) ||
- _ILIsBitBucket(pidl_child) || _ILIsDrive(pidl_child) ||
_ILIsCPanelStruct(pidl_child) || _ILIsFolder(pidl_child) ||
_ILIsControlPanel(pidl_folder))
+ if (_ILIsDesktop(pidl) || _ILIsMyDocuments(pidl) || _ILIsControlPanel(pidl) ||
_ILIsNetHood(pidl) ||
+ _ILIsBitBucket(pidl) || _ILIsDrive(pidl) || _ILIsCPanelStruct(pidl) ||
_ILIsFolder(pidl) || _ILIsControlPanel(pidl))
{
TRACE("pidl is a folder\n");
SHFree((void*)pidl);
Modified: branches/shell32_new-bringup/dll/win32/shell32/shlview.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/shell32_new-bringup/dll/win32/s…
==============================================================================
--- branches/shell32_new-bringup/dll/win32/shell32/shlview.cpp [iso-8859-1] (original)
+++ branches/shell32_new-bringup/dll/win32/shell32/shlview.cpp [iso-8859-1] Wed May 25
20:36:21 2011
@@ -1712,7 +1712,7 @@
case LVN_ENDLABELEDITW:
{
- TRACE("-- LVN_ENDLABELEDITA %p\n", this);
+ TRACE("-- LVN_ENDLABELEDITW %p\n", this);
if (lpdi->item.pszText)
{
HRESULT hr;