Small fixes.

This commit is contained in:
Juergen Schmied 2000-04-28 20:17:14 +00:00 committed by Alexandre Julliard
parent c17ddc868e
commit 1b4f5bb2ce
2 changed files with 52 additions and 42 deletions

View file

@ -11,7 +11,6 @@
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "winbase.h"
#include "debugtools.h"
#include "shell.h"
@ -29,10 +28,7 @@ DEFAULT_DEBUG_CHANNEL(pidl)
DECLARE_DEBUG_CHANNEL(shell)
void pdump (LPCITEMIDLIST pidl)
{ DWORD type;
char * szData;
char * szShortName;
char szName[MAX_PATH];
{
BOOL bIsShellDebug;
LPITEMIDLIST pidltemp = pidl;
@ -55,13 +51,21 @@ void pdump (LPCITEMIDLIST pidl)
{
do
{
type = _ILGetDataPointer(pidltemp)->type;
szData = _ILGetTextPointer(pidltemp);
szShortName = _ILGetSTextPointer(pidltemp);
_ILSimpleGetText(pidltemp, szName, MAX_PATH);
DWORD dwAttrib = 0;
LPPIDLDATA pData = _ILGetDataPointer(pidltemp);
DWORD type = pData->type;
LPSTR szLongName = _ILGetTextPointer(pidltemp);
LPSTR szShortName = _ILGetSTextPointer(pidltemp);
char szName[MAX_PATH];
MESSAGE ("-- pidl=%p size=%u type=%lx name=%s (%s,%s)\n",
pidltemp, pidltemp->mkid.cb,type,szName,debugstr_a(szData), debugstr_a(szShortName));
_ILSimpleGetText(pidltemp, szName, MAX_PATH);
if( PT_FOLDER == type)
dwAttrib = pData->u.folder.uFileAttribs;
else if( PT_VALUE == type)
dwAttrib = pData->u.file.uFileAttribs;
MESSAGE ("-- pidl=%p size=%u type=%lx attr=0x%08lx name=%s (%s,%s)\n",
pidltemp, pidltemp->mkid.cb,type,dwAttrib,szName,debugstr_a(szLongName), debugstr_a(szShortName));
pidltemp = ILGetNext(pidltemp);
@ -677,25 +681,23 @@ LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl,LPCITEMIDLIST item,BOOL bEnd)
* exported by ordinal
*/
DWORD WINAPI ILFree(LPITEMIDLIST pidl)
{ TRACE("(pidl=0x%08lx)\n",(DWORD)pidl);
{
TRACE("(pidl=0x%08lx)\n",(DWORD)pidl);
if (!pidl)
return FALSE;
return SHFree(pidl);
if(!pidl) return FALSE;
SHFree(pidl);
return TRUE;
}
/*************************************************************************
* ILGlobalFree [SHELL32.156]
*
*/
DWORD WINAPI ILGlobalFree( LPITEMIDLIST pidl)
void WINAPI ILGlobalFree( LPCITEMIDLIST pidl)
{
TRACE("%p\n",pidl);
if (!pidl)
return FALSE;
return pCOMCTL32_Free (pidl);
if(!pidl) return;
pCOMCTL32_Free(pidl);
}
/*************************************************************************
* ILCreateFromPath [SHELL32.157]
@ -858,7 +860,8 @@ HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int n
{
TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len);
if (! psf || !dest ) return E_INVALIDARG;
pdump(pidl);
if (!psf || !dest ) return E_INVALIDARG;
switch (nFormat)
{
@ -894,6 +897,10 @@ HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int n
*/
HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len)
{
TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len);
pdump(pidl);
if (! psf || !dest ) return E_INVALIDARG;
switch (nFormat)
@ -956,6 +963,11 @@ BOOL WINAPI SHGetPathFromIDListA (LPCITEMIDLIST pidl,LPSTR pszPath)
{
SHGetSpecialFolderPathA(0, pszPath, CSIDL_DESKTOPDIRECTORY, FALSE);
}
else if (_ILIsSpecialFolder(ILFindLastID(pidl)))
{
/* we are somewhere in a special folder */
return FALSE;
}
else
{
if (SHGetDesktopFolder(&shellfolder)==S_OK)
@ -1539,6 +1551,8 @@ BOOL _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *pFt)
{
LPPIDLDATA pdata =_ILGetDataPointer(pidl);
if(! pdata) return FALSE;
switch (pdata->type)
{
case PT_FOLDER:
@ -1587,6 +1601,8 @@ DWORD _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
LPPIDLDATA pdata =_ILGetDataPointer(pidl);
DWORD dwSize;
if(! pdata) return 0;
switch (pdata->type)
{
case PT_VALUE:
@ -1678,7 +1694,8 @@ void _ILGetFileType(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
* RETURNS
* Attributes
*
* NOTES
* FIXME
* return value 0 in case of error is a valid return value
*
*/
DWORD _ILGetFileAttributes(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
@ -1687,6 +1704,8 @@ DWORD _ILGetFileAttributes(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
WORD wAttrib = 0;
int i;
if(! pData) return 0;
switch(pData->type)
{
case PT_FOLDER:

View file

@ -6,10 +6,6 @@
* This is the view visualizing the data provied by the shellfolder.
* No direct access to data from pidls should be done from here.
*
* FIXME: There is not jet a official interface defined to manipulate
* the objects shown in the view (rename, move...). This should be
* implemented as additional interface to IShellFolder.
*
* FIXME: The order by part of the background context menu should be
* buily according to the columns shown.
*
@ -471,7 +467,7 @@ static INT CALLBACK ShellView_ListViewCompareItems(LPVOID lParam1, LPVOID lParam
*/
static int LV_FindItemByPidl(
IShellViewImpl * This,
LPITEMIDLIST pidl)
LPCITEMIDLIST pidl)
{
LVITEMA lvItem;
ZeroMemory(&lvItem, sizeof(LVITEMA));
@ -491,11 +487,11 @@ static int LV_FindItemByPidl(
/**********************************************************
* LV_AddItem()
*/
static BOOLEAN LV_AddItem(IShellViewImpl * This, LPITEMIDLIST pidl)
static BOOLEAN LV_AddItem(IShellViewImpl * This, LPCITEMIDLIST pidl)
{
LVITEMA lvItem;
FIXME("(%p)(pidl=%p)\n", This, pidl);
TRACE("(%p)(pidl=%p)\n", This, pidl);
ZeroMemory(&lvItem, sizeof(lvItem)); /* create the listview item*/
lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; /*set the mask*/
@ -509,11 +505,11 @@ static BOOLEAN LV_AddItem(IShellViewImpl * This, LPITEMIDLIST pidl)
/**********************************************************
* LV_DeleteItem()
*/
static BOOLEAN LV_DeleteItem(IShellViewImpl * This, LPITEMIDLIST pidl)
static BOOLEAN LV_DeleteItem(IShellViewImpl * This, LPCITEMIDLIST pidl)
{
int nIndex;
FIXME("(%p)(pidl=%p)\n", This, pidl);
TRACE("(%p)(pidl=%p)\n", This, pidl);
nIndex = LV_FindItemByPidl(This, ILFindLastID(pidl));
return (-1==ListView_DeleteItem(This->hWndList, nIndex))? FALSE: TRUE;
@ -522,12 +518,12 @@ static BOOLEAN LV_DeleteItem(IShellViewImpl * This, LPITEMIDLIST pidl)
/**********************************************************
* LV_RenameItem()
*/
static BOOLEAN LV_RenameItem(IShellViewImpl * This, LPITEMIDLIST pidlOld, LPITEMIDLIST pidlNew )
static BOOLEAN LV_RenameItem(IShellViewImpl * This, LPCITEMIDLIST pidlOld, LPCITEMIDLIST pidlNew )
{
int nItem;
LVITEMA lvItem;
FIXME("(%p)(pidlold=%p pidlnew=%p)\n", This, pidlOld, pidlNew);
TRACE("(%p)(pidlold=%p pidlnew=%p)\n", This, pidlOld, pidlNew);
nItem = LV_FindItemByPidl(This, ILFindLastID(pidlOld));
if ( -1 != nItem )
@ -603,13 +599,8 @@ static HRESULT ShellView_FillList(IShellViewImpl * This)
/* in a commdlg This works as a filemask*/
if ( IncludeObject(This, pidl)==S_OK )
{
if(! LV_AddItem(This, pidl)) SHFree(pidl); /* insert failed: PIDL not owned by the LV */
}
else
{
SHFree(pidl); /* not inserted */
}
LV_AddItem(This, pidl);
SHFree(pidl);
}
/*turn the listview's redrawing back on and force it to draw*/
@ -1199,7 +1190,7 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
if (ShellView_GetSelections(This))
{
IDataObject * pda;
DWORD dwAttributes;
DWORD dwAttributes = SFGAO_CANLINK;
DWORD dwEffect = DROPEFFECT_COPY | DROPEFFECT_MOVE;
if(GetShellOle())