]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/toolbar.cpp
FixMath fix
[wxWidgets.git] / src / mac / carbon / toolbar.cpp
index 0ae7bed16ee73de01b88d0a755b169988d6dedb7..ef6f7623c4008ca66ac7a222d04023d76e400eb1 100644 (file)
@@ -9,14 +9,15 @@
 // Licence:     The wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "toolbar.h"
 #endif
 
-#include "wx/wx.h"
+#include "wx/wxprec.h"
 
 #if wxUSE_TOOLBAR
 
+#include "wx/wx.h"
 #include "wx/toolbar.h"
 #include "wx/notebook.h"
 #include "wx/tabctrl.h"
@@ -123,10 +124,9 @@ static pascal OSStatus wxMacToolBarToolControlEventHandler( EventHandlerCallRef
                 wxToolBarTool* tbartool = (wxToolBarTool*)data ;
                 if ( tbartool->CanBeToggled() )
                 {
-                    tbartool->Toggle( GetControl32BitValue( (ControlRef) tbartool->GetControlHandle() ) ) ;
+                    ((wxToolBar*)tbartool->GetToolBar())->ToggleTool(tbartool->GetId(), GetControl32BitValue((ControlRef)tbartool->GetControlHandle()));
                 }
                 ((wxToolBar*)tbartool->GetToolBar())->OnLeftClick( tbartool->GetId() , tbartool -> IsToggled() ) ;
-
                 result = noErr; 
             }
             break ;
@@ -212,7 +212,7 @@ void wxToolBarTool::SetPosition(const wxPoint& position)
         GetControlBounds( m_controlHandle , &contrlRect ) ; 
         int former_mac_x = contrlRect.left ;
         int former_mac_y = contrlRect.top ;
-        wxSize sz = GetToolBar()->GetToolSize() ;
+        GetToolBar()->GetToolSize() ;
         
         if ( mac_x != former_mac_x || mac_y != former_mac_y )
         {
@@ -349,12 +349,32 @@ bool wxToolBar::Realize()
         node = node->GetNext();
     }
 
+    bool lastWasRadio = FALSE;
     node = m_tools.GetFirst();
     while (node)
     {
         wxToolBarTool *tool = (wxToolBarTool *)node->GetData();
         wxSize cursize = tool->GetSize() ;
         
+        bool isRadio = FALSE;
+
+        if ( tool->IsButton() && tool->GetKind() == wxITEM_RADIO )
+        {
+            if ( !lastWasRadio )
+            {
+                if (tool->Toggle(true))
+                {
+                    DoToggleTool(tool, true);
+                }
+            }
+            isRadio = TRUE;
+        }
+        else
+        {
+            isRadio = FALSE;
+        }
+        lastWasRadio = isRadio;
+
         // for the moment we just do a single row/column alignement
         if ( x + cursize.x > maxWidth )
             maxWidth = x + cursize.x ;
@@ -382,9 +402,10 @@ bool wxToolBar::Realize()
             // if not set yet, only one row
             SetRows(1);
         }
+        m_minWidth = maxWidth;
         maxWidth = tw ; 
         maxHeight += m_yMargin + kwxMacToolBarTopMargin;
-        m_maxHeight = maxHeight ;
+        m_minHeight = m_maxHeight = maxHeight ;
     }
     else
     {
@@ -393,9 +414,10 @@ bool wxToolBar::Realize()
             // if not set yet, have one column
             SetRows(GetToolsCount());
         }
+        m_minHeight = maxHeight;
         maxHeight = th ;
         maxWidth += m_xMargin + kwxMacToolBarLeftMargin;
-        m_maxWidth = maxWidth ;
+        m_minWidth = m_maxWidth = maxWidth ;
     }
     
     SetSize( maxWidth, maxHeight );
@@ -462,17 +484,11 @@ wxString wxToolBar::MacGetToolTipString( wxPoint &pt )
 
 void wxToolBar::DoEnableTool(wxToolBarToolBase *t, bool enable)
 {
-    if (!IsShown())
-        return ;
-
     ((wxToolBarTool*)t)->DoEnable( enable ) ;
 }
 
 void wxToolBar::DoToggleTool(wxToolBarToolBase *t, bool toggle)
 {
-    if (!IsShown())
-        return ;
-
     wxToolBarTool *tool = (wxToolBarTool *)t;
     if ( tool->IsButton() )
     {