comctl32/imagelist: Fix return value from IImageList_SetBkColor().
authorNikolay Sivov <nsivov@codeweavers.com>
Sat, 21 Aug 2010 15:22:34 +0000 (19:22 +0400)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 23 Aug 2010 11:37:02 +0000 (13:37 +0200)
dlls/comctl32/imagelist.c
dlls/comctl32/tests/imagelist.c

index f110787bac45a0ab0983899febb1ca7d91041f58..89333bfa8c50b845c70c76a3527c7e904d0b2b00 100644 (file)
@@ -3458,11 +3458,8 @@ static HRESULT WINAPI ImageListImpl_SetImageCount(IImageList *iface,
 static HRESULT WINAPI ImageListImpl_SetBkColor(IImageList *iface, COLORREF clrBk,
     COLORREF *pclr)
 {
-    if (!pclr)
-        return E_FAIL;
-
     *pclr = ImageList_SetBkColor((HIMAGELIST) iface, clrBk);
-    return *pclr == CLR_NONE ? E_FAIL : S_OK;
+    return S_OK;
 }
 
 static HRESULT WINAPI ImageListImpl_GetBkColor(IImageList *iface, COLORREF *pclr)
index dc1c0c8a9e3f2aa11b16c20bc915f591e846e164..ff3ada4f5b58d421d5d718f517f8082f78923c72 100644 (file)
@@ -1833,6 +1833,36 @@ if (0)
     IImageList_Release(imgl);
 }
 
+static void test_IImageList_SetBkColor(void)
+{
+    IImageList *imgl;
+    HIMAGELIST himl;
+    COLORREF color;
+    HRESULT hr;
+
+    himl = ImageList_Create(16, 16, ILC_COLOR16, 0, 3);
+    imgl = (IImageList*)himl;
+
+if (0)
+{
+    /* crashes on native */
+    hr = IImageList_SetBkColor(imgl, RGB(0, 0, 0), NULL);
+}
+
+    hr = IImageList_SetBkColor(imgl, CLR_NONE, &color);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+
+    hr = IImageList_SetBkColor(imgl, CLR_NONE, &color);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+
+    color = 0xdeadbeef;
+    hr = IImageList_GetBkColor(imgl, &color);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    ok(color == CLR_NONE, "got %x\n", color);
+
+    IImageList_Release(imgl);
+}
+
 START_TEST(imagelist)
 {
     ULONG_PTR ctx_cookie;
@@ -1887,6 +1917,7 @@ START_TEST(imagelist)
     test_IImageList_Merge();
     test_IImageList_Clone();
     test_IImageList_GetBkColor();
+    test_IImageList_SetBkColor();
 
     CoUninitialize();