X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/01ffa8f7f7acaf3851a436cf3e6975c43c46648c..3d63970769b32a93061989a38a00a5b6110bc7a5:/src/mac/carbon/toolbar.cpp?ds=inline diff --git a/src/mac/carbon/toolbar.cpp b/src/mac/carbon/toolbar.cpp index 0ae7bed16e..ef6f7623c4 100644 --- a/src/mac/carbon/toolbar.cpp +++ b/src/mac/carbon/toolbar.cpp @@ -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() ) {