Fix from Jed Burgess that correctly untoggles radio toolbar items when

another one in the same group is selected.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2004-09-23 22:39:24 +00:00
parent f31d9916c2
commit 214b94848a
2 changed files with 29 additions and 4 deletions

View File

@ -385,7 +385,10 @@ void wxToolBarBase::UnToggleRadioGroup(wxToolBarToolBase *tool)
if ( !tool->IsButton() || tool->GetKind() != wxITEM_RADIO )
break;
tool->Toggle(false);
if ( tool->Toggle(false) )
{
DoToggleTool(tool, false);
}
nodeNext = nodeNext->GetNext();
}
@ -398,7 +401,10 @@ void wxToolBarBase::UnToggleRadioGroup(wxToolBarToolBase *tool)
if ( !tool->IsButton() || tool->GetKind() != wxITEM_RADIO )
break;
tool->Toggle(false);
if ( tool->Toggle(false) )
{
DoToggleTool(tool, false);
}
nodePrev = nodePrev->GetPrevious();
}

View File

@ -123,10 +123,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 ;
@ -349,12 +348,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 ;