Fixing arrow button
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Button.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Button.java
index 46482b4..1533346 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Button.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Button.java
@@ -232,12 +232,20 @@
 		};
 		handle = OS.XmCreateArrowButton (parentHandle, null, argList, argList.length / 2);
         */
-        int proc = OS.kControlPopupArrowEastProc;
-        if ((style & SWT.LEFT) != 0) proc = OS.kControlPopupArrowWestProc;
-        if ((style & SWT.UP) != 0) proc = OS.kControlPopupArrowNorthProc;
-        if ((style & SWT.DOWN) != 0) proc = OS.kControlPopupArrowSouthProc;
-        handle= MacUtil.newControl(parentHandle, (short)proc);
+        handle= MacUtil.newControl(parentHandle, (short)OS.kControlBevelButtonNormalBevelProc);
 		if (handle == 0) error (SWT.ERROR_NO_HANDLES);
+		int kThemeDisclosureRight = 0;
+  		int kThemeDisclosureDown = 1;
+  		int kThemeDisclosureLeft = 2;
+  		int kThemeDisclosureButton = 6;
+  		int kControlBevelButtonKindTag = ('b'<<24) + ('e'<<16) + ('b'<<8) + 'k';
+		int orientation = kThemeDisclosureRight;
+		if ((style & SWT.UP) != 0) orientation = kThemeDisclosureRight; // NEEDS WORK
+		if ((style & SWT.DOWN) != 0) orientation = kThemeDisclosureDown;
+		if ((style & SWT.LEFT) != 0) orientation = kThemeDisclosureLeft;
+		OS.SetControlData (handle, OS.kControlEntireControl, kControlBevelButtonKindTag, new short [] {(short)(kThemeDisclosureButton)});
+		OS.SetControl32BitMaximum (handle, 2);
+		OS.SetControl32BitValue (handle, orientation);
         /* AW
 		if ((style & SWT.FLAT) != 0) {
 			int [] argList1 = {OS.XmNshadowThickness, 1};