comctl32/imagelist: Fix failure code for IImageList_Draw().

This commit is contained in:
Nikolay Sivov 2010-08-19 09:42:44 +04:00 committed by Alexandre Julliard
parent 33ee0cae46
commit 5ee4441c15
2 changed files with 11 additions and 8 deletions

View File

@ -3298,11 +3298,8 @@ static HRESULT WINAPI ImageListImpl_Draw(IImageList *iface,
IMAGELISTDRAWPARAMS *pimldp)
{
HIMAGELIST This = (HIMAGELIST) iface;
HIMAGELIST old_himl = 0;
int ret = 0;
if (!pimldp)
return E_FAIL;
HIMAGELIST old_himl;
int ret;
/* As far as I can tell, Windows simply ignores the contents of pimldp->himl
so we shall simulate the same */
@ -3312,7 +3309,7 @@ static HRESULT WINAPI ImageListImpl_Draw(IImageList *iface,
ret = ImageList_DrawIndirect(pimldp);
pimldp->himl = old_himl;
return ret ? S_OK : E_FAIL;
return ret ? S_OK : E_INVALIDARG;
}
static HRESULT WINAPI ImageListImpl_Remove(IImageList *iface, int i)

View File

@ -1596,9 +1596,15 @@ static void test_IImageList_Draw(void)
ok( IImageList_SetImageCount(imgl, 3) == S_OK, "Setimage count failed\n");
ok( IImageList_Replace(imgl, 2, hbm3, 0) == S_OK, "failed to replace bitmap 3\n");
if (0)
{
/* crashes on native */
hr = IImageList_Draw(imgl, NULL);
}
memset(&imldp, 0, sizeof (imldp));
hr = IImageList_Draw(imgl, &imldp);
todo_wine ok( hr == E_INVALIDARG, "got 0x%08x\n", hr);
ok( hr == E_INVALIDARG, "got 0x%08x\n", hr);
imldp.cbSize = IMAGELISTDRAWPARAMS_V3_SIZE;
imldp.hdcDst = hdc;
@ -1618,7 +1624,7 @@ static void test_IImageList_Draw(void)
imldp.i ++;
ok( IImageList_Draw(imgl, &imldp) == S_OK, "should succeed\n");
imldp.i ++;
todo_wine ok( IImageList_Draw(imgl, &imldp) == E_INVALIDARG, "should fail\n");
ok( IImageList_Draw(imgl, &imldp) == E_INVALIDARG, "should fail\n");
/* remove three */
ok( IImageList_Remove(imgl, 0) == S_OK, "removing 1st bitmap\n");