--- wine/dlls/comctl32/toolbar.c	Fri Jan 25 13:03:39 2002
+++ wine/dlls/comctl32/toolbar.c	Sat Mar  2 01:51:13 2002
@@ -1079,6 +1079,8 @@
     BOOL hasDropDownArrows = TOOLBAR_HasDropDownArrows(infoPtr->dwExStyle);
 
     TOOLBAR_CalcStrings (hwnd, &sizeString);
+    /* If there is no string, use bitmap size */
+    if(!sizeString.cx) usesBitmaps = TRUE;
 
     if (dwStyle & TBSTYLE_LIST)
     {
@@ -2775,11 +2777,7 @@
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (infoPtr->nNumButtons > 0)
-	return MAKELONG((WORD)infoPtr->nButtonWidth,
-			(WORD)infoPtr->nButtonHeight);
-    else
-	return MAKELONG(8,7);
+    return MAKELONG((WORD)infoPtr->nButtonWidth, (WORD)infoPtr->nButtonHeight);
 }
 
 
@@ -5222,6 +5220,46 @@
                 else
                     return SendMessageA (GetParent (hwnd), uMsg, wParam, lParam);
             }
+
+	case 0x0463:
+	{
+	    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+	    LPSIZE lpSize = (LPSIZE)lParam;
+	    
+	    if (lpSize == NULL)
+		return FALSE;
+
+	    TRACE("input size %ld x %ld\n", lpSize->cx, lpSize->cy);
+
+	    if(wParam == 1)
+	    {
+		TRACE("nNumButtons = %d, nNumBitmaps = %d\n",
+		    infoPtr->nNumButtons, infoPtr->nNumBitmaps);
+//		lpSize->cy = infoPtr->nHeight * infoPtr->nNumButtons;
+		lpSize->cy = infoPtr->nButtonHeight;
+	    }
+	    else if(lpSize->cx < 0)
+	    {
+		lpSize->cx = infoPtr->rcBound.right - infoPtr->rcBound.left;
+	    }
+	    else if(!HIWORD(lpSize->cx))
+	    {
+		//lpSize->cx += infoPtr->cxMax;
+		lpSize->cx += infoPtr->rcBound.right - infoPtr->rcBound.left;
+	    }
+	    else
+	    {
+		RECT rc;
+		HWND hwndParent = GetParent(hwnd);
+		GetWindowRect(hwnd, &rc);
+		MapWindowPoints(0, hwndParent, (LPPOINT)&rc, 2);
+		/* Seems to always return 0 here */
+		lpSize->cx = 0;//rc.left;
+	    }
+
+	    TRACE("returning size %ld x %ld\n", lpSize->cx, lpSize->cy);
+	    break;
+	}
 
 	default:
 	    if (uMsg >= WM_USER)
