+ return new wxToolBarTool(this, id, label, bmpNormal, bmpDisabled, kind,
+ clientData, shortHelp, longHelp);
+}
+
+wxToolBarToolBase *wxToolBar::CreateTool(wxControl *control)
+{
+ return new wxToolBarTool(this, control);
+}
+
+void wxToolBar::Init()
+{
+ m_maxWidth = -1;
+ m_maxHeight = -1;
+ m_defaultWidth = kwxMacToolBarToolDefaultWidth;
+ m_defaultHeight = kwxMacToolBarToolDefaultHeight;
+}
+
+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 ;
+
+ return TRUE;
+}
+
+wxToolBar::~wxToolBar()
+{
+ // we must refresh the frame size when the toolbar is deleted but the frame
+ // is not - otherwise toolbar leaves a hole in the place it used to occupy
+}
+
+bool wxToolBar::Realize()
+{
+ if (m_tools.GetCount() == 0)
+ return FALSE;
+
+ int x = m_xMargin + kwxMacToolBarLeftMargin ;
+ int y = m_yMargin + kwxMacToolBarTopMargin ;
+
+ int tw, th;
+ GetSize(& tw, & th);
+
+ int maxWidth = 0 ;
+ int maxHeight = 0 ;
+
+ int maxToolWidth = 0;
+ int maxToolHeight = 0;
+
+ // Find the maximum tool width and height
+ wxToolBarToolsList::Node *node = m_tools.GetFirst();
+ while ( node )
+ {
+ wxToolBarTool *tool = (wxToolBarTool *)node->GetData();
+ wxSize sz = tool->GetSize() ;
+
+ if ( sz.x > maxToolWidth )
+ maxToolWidth = sz.x ;
+ if (sz.y> maxToolHeight)
+ maxToolHeight = sz.y;
+
+ node = node->GetNext();
+ }
+
+ node = m_tools.GetFirst();
+ while (node)
+ {
+ wxToolBarTool *tool = (wxToolBarTool *)node->GetData();
+ wxSize cursize = tool->GetSize() ;
+
+ // for the moment we just do a single row/column alignement
+ if ( x + cursize.x > maxWidth )
+ maxWidth = x + cursize.x ;
+ if ( y + cursize.y > maxHeight )
+ maxHeight = y + cursize.y ;
+
+ tool->SetPosition( wxPoint( x , y ) ) ;
+
+ if ( GetWindowStyleFlag() & wxTB_VERTICAL )
+ {
+ y += cursize.y ;
+ }
+ else
+ {
+ x += cursize.x ;
+ }
+
+ node = node->GetNext();
+ }
+
+ if ( GetWindowStyleFlag() & wxTB_HORIZONTAL )
+ {
+ if ( m_maxRows == 0 )
+ {
+ // if not set yet, only one row
+ SetRows(1);
+ }
+ maxWidth = tw ;
+ maxHeight += m_yMargin + kwxMacToolBarTopMargin;
+ m_maxHeight = maxHeight ;
+ }
+ else
+ {
+ if ( GetToolsCount() > 0 && m_maxRows == 0 )
+ {
+ // if not set yet, have one column
+ SetRows(GetToolsCount());
+ }
+ maxHeight = th ;
+ maxWidth += m_xMargin + kwxMacToolBarLeftMargin;
+ m_maxWidth = maxWidth ;
+ }
+
+ SetSize( maxWidth, maxHeight );
+
+ return TRUE;