backport 38643
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java
index df23af8..5d10adf 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java
@@ -614,6 +614,28 @@
 	OS.SendMessage (handle, OS.TB_SETDISABLEDIMAGELIST, 0, hImageList);
 }
 
+public void setFont (Font font) {
+	checkWidget ();
+	super.setFont (font);
+	/*
+	* Bug in Windows.  When WM_SETFONT is sent to a tool bar
+	* that contains only separators, causes the bitmap and button
+	* sizes to be set.  The fix is to reset these sizes after the font
+	* has been changed when the tool bar contains only separators.
+	*/
+	int index = 0;
+	int mask = SWT.PUSH | SWT.CHECK | SWT.RADIO | SWT.DROP_DOWN;
+	while (index < items.length) {
+		ToolItem item = items [index];
+		if (item != null && (item.style & mask) != 0) break;
+		index++;
+	}
+	if (index == items.length) {
+		OS.SendMessage (handle, OS.TB_SETBITMAPSIZE, 0, 0);
+		OS.SendMessage (handle, OS.TB_SETBUTTONSIZE, 0, 0);
+	}
+}
+
 void setHotImageList (ImageList imageList) {
 	if (hotImageList == imageList) return;
 	int hImageList = 0;