]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/classic/button.cpp
Override GetPixelSize on OS X as the base impl creates a wxScreenDC each time, which...
[wxWidgets.git] / src / mac / classic / button.cpp
index 3ce18b2e27f0333a1c44d79343c191dca112992b..714983c2fa028b4a97c985493f8b7b7f94964418 100644 (file)
@@ -1,39 +1,46 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        button.cpp
+// Name:        src/mac/classic/button.cpp
 // Purpose:     wxButton
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     1998-01-01
 // RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
-// Licence:       wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation "button.h"
-#endif
+#include "wx/wxprec.h"
 
-#include "wx/defs.h"
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
 
 #include "wx/button.h"
-#include "wx/panel.h"
 
-#if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl)
+#ifndef WX_PRECOMP
+    #include "wx/panel.h"
 #endif
 
+#include "wx/stockitem.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl)
+
 #include "wx/mac/uma.h"
 // Button
 
 static const int kMacOSXHorizontalBorder = 2 ;
 static const int kMacOSXVerticalBorder = 4 ;
 
-bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
+bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& lbl,
            const wxPoint& pos,
            const wxSize& size, long style,
            const wxValidator& validator,
            const wxString& name)
 {
+    wxString label(lbl);
+    if (label.empty() && wxIsStockID(id))
+        label = wxGetStockLabel(id);
+
     if ( !wxButtonBase::Create(parent, id, pos, size, style, validator, name) )
         return false;
 
@@ -45,27 +52,26 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
         m_macHorizontalBorder = kMacOSXHorizontalBorder;
         m_macVerticalBorder = kMacOSXVerticalBorder;
     }
-    
+
     MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 
-    m_macControl = (WXWidget) ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1, 
+    m_macControl = (WXWidget) ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
           kControlPushButtonProc , (long) this ) ;
     wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
-    
+
     MacPostControlCreate() ;
-    
-  return TRUE;
+
+    return true;
 }
 
 void wxButton::SetDefault()
 {
-    wxWindow *parent = GetParent();
+    wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
     wxButton *btnOldDefault = NULL;
-    if ( parent )
+    if ( tlw )
     {
-        btnOldDefault = wxDynamicCast(parent->GetDefaultItem(),
-           wxButton);
-        parent->SetDefaultItem(this);
+        btnOldDefault = wxDynamicCast(tlw->GetDefaultItem(), wxButton);
+        tlw->SetDefaultItem(this);
     }
 
     Boolean inData;
@@ -85,18 +91,18 @@ void wxButton::SetDefault()
 
 wxSize wxButton::DoGetBestSize() const
 {
-  wxSize sz = GetDefaultSize() ;
-  
-  int wBtn = m_label.Length() * 8 + 12 + 2 * kMacOSXHorizontalBorder ;
-    
-  if (wBtn > sz.x) sz.x = wBtn;
-  
-  return sz ;
+    wxSize sz = GetDefaultSize() ;
+
+    int wBtn = m_label.length() * 8 + 12 + 2 * kMacOSXHorizontalBorder ;
+
+    if (wBtn > sz.x) sz.x = wBtn;
+
+    return sz ;
 }
 
 wxSize wxButton::GetDefaultSize()
 {
-    int wBtn = 70 ; 
+    int wBtn = 70 ;
     int hBtn = 20 ;
 
     if ( UMAHasAquaLayout() )
@@ -120,7 +126,7 @@ void wxButton::Command (wxCommandEvent & event)
     ProcessCommand (event);
 }
 
-void wxButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart , bool WXUNUSED(mouseStillDown) ) 
+void wxButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart , bool WXUNUSED(mouseStillDown) )
 {
     if ( controlpart != kControlNoPart )
     {
@@ -129,4 +135,3 @@ void wxButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 contr
         ProcessCommand(event);
     }
 }
-