+ wxToolBarTool* tool = wx_static_cast( wxToolBarTool* , toolBase ) ;
+
+ WindowRef window = (WindowRef) MacGetTopLevelWindowRef() ;
+ wxSize toolSize = GetToolSize() ;
+ Rect toolrect = { 0, 0 , toolSize.y , toolSize.x } ;
+ ControlRef controlHandle = NULL ;
+
+ switch( tool->GetStyle() )
+ {
+ case wxTOOL_STYLE_SEPARATOR :
+ {
+ wxASSERT( tool->GetControlHandle() == NULL ) ;
+ toolSize.x /= 4 ;
+ toolSize.y /= 4 ;
+ if ( GetWindowStyleFlag() & wxTB_VERTICAL )
+ {
+ toolrect.bottom = toolSize.y ;
+ }
+ else
+ {
+ toolrect.right = toolSize.x ;
+ }
+ #ifdef __WXMAC_OSX__
+ // in flat style we need a visual separator
+ CreateSeparatorControl( window , &toolrect , &controlHandle ) ;
+ tool->SetControlHandle( controlHandle ) ;
+ #endif
+ }
+ break ;
+ case wxTOOL_STYLE_BUTTON :
+ {
+ wxASSERT( tool->GetControlHandle() == NULL ) ;
+ ControlButtonContentInfo info ;
+ wxMacCreateBitmapButton( &info , tool->GetNormalBitmap() , kControlContentIconRef ) ;
+
+ #ifdef __WXMAC_OSX__
+ CreateIconControl( window , &toolrect , &info , false , &controlHandle ) ;
+ #else
+ SInt16 behaviour = kControlBehaviorOffsetContents ;
+ if ( tool->CanBeToggled() )
+ behaviour += kControlBehaviorToggles ;
+ CreateBevelButtonControl( window , &toolrect , CFSTR("") , kControlBevelButtonNormalBevel , behaviour , &info ,
+ 0 , 0 , 0 , &controlHandle ) ;
+ #endif
+
+ wxMacReleaseBitmapButton( &info ) ;
+ /*
+ SetBevelButtonTextPlacement( m_controlHandle , kControlBevelButtonPlaceBelowGraphic ) ;
+ UMASetControlTitle( m_controlHandle , label , wxFont::GetDefaultEncoding() ) ;
+ */
+
+ InstallControlEventHandler( (ControlRef) controlHandle, GetwxMacToolBarToolEventHandlerUPP(),
+ GetEventTypeCount(eventList), eventList, tool,NULL);
+
+ tool->SetControlHandle( controlHandle ) ;
+ }
+ break ;
+ case wxTOOL_STYLE_CONTROL :
+ wxASSERT( tool->GetControl() != NULL ) ;
+ // right now there's nothing to do here
+ break ;
+ }
+
+ if ( controlHandle )
+ {
+ ControlRef container = (ControlRef) GetHandle() ;
+ wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ;
+
+ UMAShowControl( controlHandle ) ;
+ ::EmbedControl( controlHandle , container ) ;
+ }
+
+ if ( tool->CanBeToggled() && tool->IsToggled() )
+ {
+ tool->UpdateToggleImage( true ) ;
+ }
+
+ // nothing special to do here - we relayout in Realize() later