Module: wine Branch: master Commit: d457b37d822323ddd82d66d6315a7be4c8ce61a7 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=d457b37d822323ddd82d66d6...
Author: Mikołaj Zalewski mikolaj@zalewski.pl Date: Wed Sep 20 17:44:36 2006 +0200
comctl32: toolbar: Use correctly wParam in TB_ADDBITMAP.
---
dlls/comctl32/tests/toolbar.c | 16 ++++++++-------- dlls/comctl32/toolbar.c | 26 ++++++++++++-------------- 2 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/dlls/comctl32/tests/toolbar.c b/dlls/comctl32/tests/toolbar.c index 699b4a7..bfcbd67 100644 --- a/dlls/comctl32/tests/toolbar.c +++ b/dlls/comctl32/tests/toolbar.c @@ -194,25 +194,25 @@ static void test_add_bitmap(void) /* the same for negative wParam */ rebuild_toolbar(&hToolbar); ret = SendMessageA(hToolbar, TB_ADDBITMAP, -143, (LPARAM)&bmp128); - todo_wine ok(ret == 0, "TB_ADDBITMAP - unexpected return %d\n", ret); - todo_wine CHECK_IMAGELIST(8, 16, 15); + ok(ret == 0, "TB_ADDBITMAP - unexpected return %d\n", ret); + CHECK_IMAGELIST(8, 16, 15); ret = SendMessageA(hToolbar, TB_ADDBITMAP, 1, (LPARAM)&bmp80); todo_wine ok(ret == -143, "TB_ADDBITMAP - unexpected return %d\n", ret); - CHECK_IMAGELIST_TODO_COUNT(13, 16, 15); + CHECK_IMAGELIST(13, 16, 15);
/* for zero only one bitmap will be added */ rebuild_toolbar(&hToolbar); ret = SendMessageA(hToolbar, TB_ADDBITMAP, 0, (LPARAM)&bmp80); - todo_wine ok(ret == 0, "TB_ADDBITMAP - unexpected return %d\n", ret); - todo_wine CHECK_IMAGELIST(1, 16, 15); + ok(ret == 0, "TB_ADDBITMAP - unexpected return %d\n", ret); + CHECK_IMAGELIST(1, 16, 15);
/* if wParam is larger than the amount of icons, the list is grown */ rebuild_toolbar(&hToolbar); ok(SendMessageA(hToolbar, TB_ADDBITMAP, 100, (LPARAM)&bmp80) == 0, "TB_ADDBITMAP - unexpected return\n"); - CHECK_IMAGELIST_TODO_COUNT(100, 16, 15); + CHECK_IMAGELIST(100, 16, 15); ret = SendMessageA(hToolbar, TB_ADDBITMAP, 100, (LPARAM)&bmp128); - todo_wine ok(ret == 100, "TB_ADDBITMAP - unexpected return %d\n", ret); - CHECK_IMAGELIST_TODO_COUNT(200, 16, 15); + ok(ret == 100, "TB_ADDBITMAP - unexpected return %d\n", ret); + CHECK_IMAGELIST(200, 16, 15);
/* adding built-in items - the wParam is ignored */ rebuild_toolbar(&hToolbar); diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index 9a04ecf..840a08a 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -2625,9 +2625,6 @@ TOOLBAR_AddBitmap (HWND hwnd, WPARAM wPa else { nButtons = (INT)wParam; - if (nButtons <= 0) - return -1; - TRACE ("adding %d bitmaps!\n", nButtons); }
@@ -2761,18 +2758,19 @@ TOOLBAR_AddBitmap (HWND hwnd, WPARAM wPa
if (nIndex != -1) { - INT imagecount = ImageList_GetImageCount(himlDef); - - if (infoPtr->nNumBitmaps + nButtons != imagecount) - { - WARN("Desired images do not match received images : Previous image number %i Previous images in list %i added %i expecting total %i, Images in list %i\n", - infoPtr->nNumBitmaps, nCount, imagecount - nCount, - infoPtr->nNumBitmaps+nButtons,imagecount); + INT imagecount = ImageList_GetImageCount(himlDef); + INT added = imagecount - nCount; + if (nButtons == 0) /* wParam == 0 is special and means add only one image */ + { + ImageList_SetImageCount(himlDef, nCount + 1); + } else if (added < nButtons) { /* if not enough buttons, grow the list */ + ImageList_SetImageCount(himlDef, nCount + nButtons); + } else if (added > nButtons) { + TRACE("Added more images than wParam: Previous image number %i added %i while nButtons %i. Images in list %i\n", + nCount, added, nButtons, imagecount); + }
- infoPtr->nNumBitmaps = imagecount; - } - else - infoPtr->nNumBitmaps += nButtons; + infoPtr->nNumBitmaps += added; }
InvalidateRect(hwnd, NULL, TRUE);