mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 23:12:56 +00:00
Vitaliy Margolen <wine-patch@kievinfo.com>
- IShellFolder::CompareIDs - return only -1/0/1 in lower 16 bit. svn path=/trunk/; revision=10931
This commit is contained in:
parent
8985a9b088
commit
88a015f877
1 changed files with 15 additions and 11 deletions
|
@ -418,7 +418,7 @@ HRESULT SHELL32_CompareIDs (IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST p
|
||||||
type2;
|
type2;
|
||||||
char szTemp1[MAX_PATH];
|
char szTemp1[MAX_PATH];
|
||||||
char szTemp2[MAX_PATH];
|
char szTemp2[MAX_PATH];
|
||||||
int nReturn = 0;
|
HRESULT nReturn;
|
||||||
LPITEMIDLIST firstpidl,
|
LPITEMIDLIST firstpidl,
|
||||||
nextpidl1,
|
nextpidl1,
|
||||||
nextpidl2;
|
nextpidl2;
|
||||||
|
@ -429,24 +429,28 @@ HRESULT SHELL32_CompareIDs (IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST p
|
||||||
BOOL isEmpty2 = _ILIsDesktop (pidl2);
|
BOOL isEmpty2 = _ILIsDesktop (pidl2);
|
||||||
|
|
||||||
if (isEmpty1 && isEmpty2)
|
if (isEmpty1 && isEmpty2)
|
||||||
return 0;
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 0 );
|
||||||
if (isEmpty1)
|
if (isEmpty1)
|
||||||
return -1;
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 );
|
||||||
if (isEmpty2)
|
if (isEmpty2)
|
||||||
return 1;
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 1 );
|
||||||
|
|
||||||
/* test for different types. Sort order is the PT_* constant */
|
/* test for different types. Sort order is the PT_* constant */
|
||||||
type1 = _ILGetDataPointer (pidl1)->type;
|
type1 = _ILGetDataPointer (pidl1)->type;
|
||||||
type2 = _ILGetDataPointer (pidl2)->type;
|
type2 = _ILGetDataPointer (pidl2)->type;
|
||||||
if (type1 != type2)
|
if (type1 < type2)
|
||||||
return (type1 - type2);
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 );
|
||||||
|
else if (type1 > type2)
|
||||||
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 1 );
|
||||||
|
|
||||||
/* test for name of pidl */
|
/* test for name of pidl */
|
||||||
_ILSimpleGetText (pidl1, szTemp1, MAX_PATH);
|
_ILSimpleGetText (pidl1, szTemp1, MAX_PATH);
|
||||||
_ILSimpleGetText (pidl2, szTemp2, MAX_PATH);
|
_ILSimpleGetText (pidl2, szTemp2, MAX_PATH);
|
||||||
nReturn = strcasecmp (szTemp1, szTemp2);
|
nReturn = strcasecmp (szTemp1, szTemp2);
|
||||||
if (nReturn != 0)
|
if (nReturn < 0)
|
||||||
return nReturn;
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 );
|
||||||
|
else if (nReturn > 0)
|
||||||
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 1 );
|
||||||
|
|
||||||
/* test of complex pidls */
|
/* test of complex pidls */
|
||||||
firstpidl = ILCloneFirst (pidl1);
|
firstpidl = ILCloneFirst (pidl1);
|
||||||
|
@ -459,11 +463,11 @@ HRESULT SHELL32_CompareIDs (IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST p
|
||||||
isEmpty2 = _ILIsDesktop (nextpidl2);
|
isEmpty2 = _ILIsDesktop (nextpidl2);
|
||||||
|
|
||||||
if (isEmpty1 && isEmpty2) {
|
if (isEmpty1 && isEmpty2) {
|
||||||
nReturn = 0;
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 0 );
|
||||||
} else if (isEmpty1) {
|
} else if (isEmpty1) {
|
||||||
nReturn = -1;
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 );
|
||||||
} else if (isEmpty2) {
|
} else if (isEmpty2) {
|
||||||
nReturn = 1;
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, 1 );
|
||||||
/* optimizing end */
|
/* optimizing end */
|
||||||
} else if (SUCCEEDED (IShellFolder_BindToObject (iface, firstpidl, NULL, &IID_IShellFolder, (LPVOID *) & psf))) {
|
} else if (SUCCEEDED (IShellFolder_BindToObject (iface, firstpidl, NULL, &IID_IShellFolder, (LPVOID *) & psf))) {
|
||||||
nReturn = IShellFolder_CompareIDs (psf, lParam, nextpidl1, nextpidl2);
|
nReturn = IShellFolder_CompareIDs (psf, lParam, nextpidl1, nextpidl2);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue