]> git.saurik.com Git - wxWidgets.git/commitdiff
added non-bordered toolbar tools
authorStefan Csomor <csomor@advancedconcepts.ch>
Wed, 16 Feb 2005 20:13:48 +0000 (20:13 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Wed, 16 Feb 2005 20:13:48 +0000 (20:13 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/toolbar.cpp

index 7cfd6a959468454098476e193d68ae3d03fb54c3..c10fb70bff080e5e651054b2380ec9dd00098499 100644 (file)
@@ -33,6 +33,21 @@ END_EVENT_TABLE()
 
 #include "wx/mac/uma.h"
 #include "wx/geometry.h"
+
+#ifdef __WXMAC_OSX__
+const short kwxMacToolBarToolDefaultWidth = 32 ;
+const short kwxMacToolBarToolDefaultHeight = 32 ;
+const short kwxMacToolBarTopMargin = 4 ;
+const short kwxMacToolBarLeftMargin = 4 ;
+const short kwxMacToolBorder = 0 ;
+#else
+const short kwxMacToolBarToolDefaultWidth = 24 ;
+const short kwxMacToolBarToolDefaultHeight = 22 ;
+const short kwxMacToolBarTopMargin = 2 ;
+const short kwxMacToolBarLeftMargin = 2 ;
+const short kwxMacToolBorder = 4 ;
+#endif
+
 // ----------------------------------------------------------------------------
 // private classes
 // ----------------------------------------------------------------------------
@@ -202,7 +217,16 @@ void wxToolBarTool::SetPosition(const wxPoint& position)
         x = y = 0 ;
         int mac_x = position.x ;
         int mac_y = position.y ;
-#if !TARGET_API_MAC_OSX
+#ifdef __WXMAC_OSX__
+        wxSize toolSize = m_tbar->GetToolSize() ;    
+        int iconsize = 16 ;
+        if ( toolSize.x >= 32 && toolSize.y >= 32)
+        {
+            iconsize = 32 ;
+        }
+        mac_x += ( toolSize.x - iconsize ) / 2 ;
+        mac_y += ( toolSize.y - iconsize ) / 2  ;
+#else
         WindowRef rootwindow = (WindowRef) GetToolBar()->MacGetTopLevelWindowRef() ;    
         GetToolBar()->MacWindowToRootWindow( &x , &y ) ;
         mac_x += x;
@@ -225,11 +249,6 @@ void wxToolBarTool::SetPosition(const wxPoint& position)
     }
 }
 
-const short kwxMacToolBarToolDefaultWidth = 24 ;
-const short kwxMacToolBarToolDefaultHeight = 22 ;
-const short kwxMacToolBarTopMargin = 2 ;
-const short kwxMacToolBarLeftMargin = 2 ;
-
 wxToolBarTool::wxToolBarTool(wxToolBar *tbar,
   int id,
   const wxString& label,
@@ -256,12 +275,29 @@ wxToolBarTool::wxToolBarTool(wxToolBar *tbar,
     SInt16 behaviour = kControlBehaviorOffsetContents ;
     if ( CanBeToggled() )
         behaviour += kControlBehaviorToggles ;
-        
+
+#ifdef __WXMAC_OSX__
+    int iconsize = 16 ;
+    if ( toolSize.x >= 32 && toolSize.y >= 32)
+    {
+        iconsize = 32 ;
+    }
+    toolrect.left += ( toolSize.x - iconsize ) / 2 ;
+    toolrect.right = toolrect.left + iconsize ;
+    toolrect.top += ( toolSize.y - iconsize ) / 2  ;
+    toolrect.bottom = toolrect.top + iconsize ;
+    CreateIconControl( window , &toolrect , &info , false , &m_controlHandle ) ;
+#else        
     CreateBevelButtonControl( window , &toolrect , CFSTR("") , kControlBevelButtonNormalBevel , behaviour , &info , 
         0 , 0 , 0 , &m_controlHandle ) ;
+#endif
         
     wxMacReleaseBitmapButton( &info ) ;
-
+    /*
+    SetBevelButtonTextPlacement( m_controlHandle , kControlBevelButtonPlaceBelowGraphic ) ;
+    UMASetControlTitle(  m_controlHandle , label , wxFont::GetDefaultEncoding() ) ;
+    */
+    
     InstallControlEventHandler( (ControlRef) m_controlHandle, GetwxMacToolBarToolEventHandlerUPP(),
         GetEventTypeCount(eventList), eventList, this,NULL);
         
@@ -307,6 +343,7 @@ void wxToolBar::Init()
 bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
             long style, const wxString& name)
 {  
+
     if ( !wxToolBarBase::Create( parent , id , pos , size , style ) )
         return FALSE ;
     
@@ -430,13 +467,13 @@ bool wxToolBar::Realize()
 
 void wxToolBar::SetToolBitmapSize(const wxSize& size)
 {
-    m_defaultWidth = size.x+4; m_defaultHeight = size.y+4;
+    m_defaultWidth = size.x+kwxMacToolBorder; m_defaultHeight = size.y+kwxMacToolBorder;
 }
 
 // The button size is bigger than the bitmap size
 wxSize wxToolBar::GetToolSize() const
 {
-    return wxSize(m_defaultWidth + 4, m_defaultHeight + 4);
+    return wxSize(m_defaultWidth + kwxMacToolBorder, m_defaultHeight + kwxMacToolBorder);
 }
 
 void wxToolBar::SetRows(int nRows)
@@ -494,7 +531,13 @@ void wxToolBar::DoToggleTool(wxToolBarToolBase *t, bool toggle)
     wxToolBarTool *tool = (wxToolBarTool *)t;
     if ( tool->IsButton() )
     {
+#ifdef __WXMAC_OSX__
+        IconTransformType transform = toggle ? kTransformSelected : kTransformNone ;
+       SetControlData( (ControlRef) tool->GetControlHandle(), 0, kControlIconTransformTag, sizeof( transform ),
+                       (Ptr)&transform );
+#else
         ::SetControl32BitValue( (ControlRef) tool->GetControlHandle() , toggle ) ;
+#endif
     }
 }
 
@@ -558,6 +601,7 @@ void wxToolBar::OnPaint(wxPaintEvent& event)
 {
     wxPaintDC dc(this) ;
 #if wxMAC_USE_CORE_GRAPHICS
+    // leave the background as it is (striped or metal)
 #else
     wxMacPortSetter helper(&dc) ;
     int w, h ;