From 8b562997d5dd78c5714f02ca55e88b620b115cca Mon Sep 17 00:00:00 2001
From: Ulrich Czekalla <uczekalla@codeweavers.com>
Date: Wed, 10 Jan 2001 22:42:05 +0000
Subject: [PATCH] Only call TOOLBAR_CalcToolbar when parameters change.

---
 dlls/comctl32/toolbar.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index 0294a2d94a7..4480f47631a 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -1546,6 +1546,8 @@ TOOLBAR_AddBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
 	    SendMessageA (hwnd, TB_SETBUTTONSIZE, 0,
 			  MAKELPARAM((WORD)22, (WORD)22));
 	}
+	
+	TOOLBAR_CalcToolbar (hwnd);
     }
     else
     {
@@ -1717,6 +1719,8 @@ TOOLBAR_AddButtonsA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 	}
     }
 
+    TOOLBAR_CalcToolbar (hwnd);
+
     InvalidateRect(hwnd, NULL, FALSE);
 
     return TRUE;
@@ -1777,6 +1781,8 @@ TOOLBAR_AddButtonsW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 	}
     }
 
+    TOOLBAR_CalcToolbar (hwnd);
+
     InvalidateRect(hwnd, NULL, FALSE);
 
     return TRUE;
@@ -1995,6 +2001,7 @@ TOOLBAR_AutoSize (HWND hwnd)
     }
     else {
 	infoPtr->nWidth = parent_rect.right - parent_rect.left;
+	TOOLBAR_CalcToolbar (hwnd);
 	InvalidateRect( hwnd, NULL, TRUE );
 	cy = infoPtr->nHeight;
 	cx = infoPtr->nWidth;
@@ -2226,6 +2233,8 @@ TOOLBAR_DeleteButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
 	COMCTL32_Free (oldButtons);
     }
 
+    TOOLBAR_CalcToolbar (hwnd);
+
     InvalidateRect (hwnd, NULL, TRUE);
 
     return TRUE;
@@ -2716,6 +2725,8 @@ TOOLBAR_HideButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
     else
 	btnPtr->fsState |= TBSTATE_HIDDEN;
 
+    TOOLBAR_CalcToolbar (hwnd);
+
     InvalidateRect (hwnd, NULL, TRUE);
 
     return TRUE;
@@ -2836,6 +2847,8 @@ TOOLBAR_InsertButtonA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 
     COMCTL32_Free (oldButtons);
 
+    TOOLBAR_CalcToolbar (hwnd);
+
     InvalidateRect (hwnd, NULL, FALSE);
 
     return TRUE;
@@ -3399,6 +3412,7 @@ TOOLBAR_SetIndent (HWND hwnd, WPARAM wParam, LPARAM lParam)
     if(infoPtr->nIndent != (INT)wParam)
     {
         infoPtr->nIndent = (INT)wParam;
+        TOOLBAR_CalcToolbar (hwnd);
         InvalidateRect(hwnd, NULL, FALSE);
     }
 
@@ -3472,6 +3486,9 @@ TOOLBAR_SetRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
     {
         infoPtr->nRows = LOWORD(wParam);
 
+        /* recalculate toolbar */
+        TOOLBAR_CalcToolbar (hwnd);
+
         /* repaint toolbar */
         InvalidateRect(hwnd, NULL, FALSE);
     }
@@ -3638,6 +3655,9 @@ TOOLBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 			  (WPARAM)nmttc.hdr.idFrom, (LPARAM)&nmttc);
 	}
     }
+
+    TOOLBAR_CalcToolbar(hwnd);
+
     return 0;
 }
 
@@ -4122,8 +4142,6 @@ TOOLBAR_Paint (HWND hwnd, WPARAM wParam)
 
     TRACE("\n");
 
-    TOOLBAR_CalcToolbar( hwnd );
-
     /* fill ps.rcPaint with a default rect */
     memcpy(&(ps.rcPaint), &(infoPtr->rcBound), sizeof(infoPtr->rcBound)); 
 
-- 
GitLab