diff -ur ooo_SRC680_m181_src.orig/vcl/aqua/inc/salgdi.h ooo_SRC680_m181_src/vcl/aqua/inc/salgdi.h
--- ooo_SRC680_m181_src.orig/vcl/aqua/inc/salgdi.h	2006-08-06 22:28:26.000000000 +0200
+++ ooo_SRC680_m181_src/vcl/aqua/inc/salgdi.h	2006-08-07 12:06:07.000000000 +0200
@@ -230,10 +230,17 @@
                                               const Point& aPos, SalControlHandle& rControlHandle, BOOL& rIsInside );
     virtual BOOL        drawNativeControl( ControlType nType, ControlPart nPart, const Region& rControlRegion,
                                            ControlState nState, const ImplControlValue& aValue, SalControlHandle& rControlHandle,
-                                           rtl::OUString aCaption );
+                                           const rtl::OUString &aCaption );
+    BOOL AquaSalGraphics::ImplDrawNativePushButton( ControlType nType,
+                                         ControlPart nPart,
+                                         const Region& rControlRegion,
+                                         ControlState nState,
+                                         const ImplControlValue& aValue,
+                                         SalControlHandle& rControlHandle,
+                                         const rtl::OUString &aCaption );
     virtual BOOL        drawNativeControlText( ControlType nType, ControlPart nPart, const Region& rControlRegion,
                                                ControlState nState, const ImplControlValue& aValue,
-                                               SalControlHandle& rControlHandle, rtl::OUString aCaption );
+                                               SalControlHandle& rControlHandle, const rtl::OUString &aCaption );
     virtual BOOL        getNativeControlRegion( ControlType nType, ControlPart nPart, const Region& rControlRegion, ControlState nState,
                                                 const ImplControlValue& aValue, SalControlHandle& rControlHandle, rtl::OUString aCaption,
                                                 Region &rNativeBoundingRegion, Region &rNativeContentRegion );
diff -ur ooo_SRC680_m181_src.orig/vcl/aqua/source/gdi/salgdi.cxx ooo_SRC680_m181_src/vcl/aqua/source/gdi/salgdi.cxx
--- ooo_SRC680_m181_src.orig/vcl/aqua/source/gdi/salgdi.cxx	2006-08-06 22:28:26.000000000 +0200
+++ ooo_SRC680_m181_src/vcl/aqua/source/gdi/salgdi.cxx	2006-08-07 17:20:51.000000000 +0200
@@ -775,15 +775,46 @@
 
 // -----------------------------------------------------------------------
 
+BOOL AquaSalGraphics::ImplDrawNativePushButton( ControlType nType,
+                                         ControlPart nPart,
+                                         const Region& rControlRegion,
+                                         ControlState nState,
+                                         const ImplControlValue& aValue,
+                                         SalControlHandle& rControlHandle,
+                                         const rtl::OUString &aCaption )
+{
+    Rectangle boundsRectangle = rControlRegion.GetBoundRect();
+    Rect boundsRect;
+
+    boundsRect.left = boundsRectangle.nLeft;
+    boundsRect.top = boundsRectangle.nTop;
+    boundsRect.right = boundsRectangle.nRight;
+    boundsRect.bottom = boundsRectangle.nBottom;
+
+    // FIXME: will we need it later?
+    ControlRef tempControlRef;
+    OSStatus err = CreatePushButtonControl ( mrWindow, &boundsRect, NULL, &tempControlRef);
+    Draw1Control (tempControlRef);
+
+    return sal_True;
+}
+
 BOOL AquaSalGraphics::drawNativeControl( ControlType nType,
                                          ControlPart nPart,
                                          const Region& rControlRegion,
                                          ControlState nState, 
                                          const ImplControlValue& aValue, 
                                          SalControlHandle& rControlHandle,
-                                         rtl::OUString aCaption )
+                                         const rtl::OUString &aCaption )
 {
-    return sal_False;
+    BOOL returnVal = sal_False;
+
+    if ( (nType==CTRL_PUSHBUTTON) && (nPart==PART_ENTIRE_CONTROL) )
+    {
+        returnVal = ImplDrawNativePushButton( nType, nPart, rControlRegion, nState, aValue, rControlHandle, aCaption );
+    }
+
+    return returnVal;
 }
 
 // -----------------------------------------------------------------------
@@ -795,7 +826,7 @@
                                            SalControlHandle& rControlHandle, 
                                            BOOL& rIsInside )
 {
-    
+    fprintf(stderr, "PJ: hitTestNativeControl called!\n");
 }
 
 // -----------------------------------------------------------------------
@@ -806,8 +837,9 @@
                                             ControlState nState, 
                                             const ImplControlValue& aValue,
                                             SalControlHandle& rControlHandle, 
-                                            rtl::OUString aCaption )
+                                            const rtl::OUString &aCaption )
 {
+    fprintf(stderr, "PJ: drawNativeControlText called!\n");
     return sal_False;
 }
 
@@ -823,6 +855,7 @@
                                              Region &rNativeBoundingRegion, 
                                              Region &rNativeContentRegion )
 {
+    fprintf(stderr, "PJ: getNativeControlRegion called!\n");
     return sal_False;
 }
 
@@ -830,7 +863,8 @@
 
 BOOL AquaSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nPart )
 {
-    return sal_False;
+    // FIXME: add support for more control types
+    return ((nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL));
 }
 
 // -----------------------------------------------------------------------
