return tool;
}
-wxToolBarToolBase *wxToolBarBase::AddControl(wxControl *control)
+wxToolBarToolBase *
+wxToolBarBase::AddControl(wxControl *control, const wxString& label)
{
- return InsertControl(GetToolsCount(), control);
+ return InsertControl(GetToolsCount(), control, label);
}
-wxToolBarToolBase *wxToolBarBase::InsertControl(size_t pos, wxControl *control)
+wxToolBarToolBase *
+wxToolBarBase::InsertControl(size_t pos,
+ wxControl *control,
+ const wxString& label)
{
wxCHECK_MSG( control, (wxToolBarToolBase *)NULL,
_T("toolbar: can't insert NULL control") );
wxCHECK_MSG( pos <= GetToolsCount(), (wxToolBarToolBase *)NULL,
_T("invalid position in wxToolBar::InsertControl()") );
- wxToolBarToolBase *tool = CreateTool(control);
+ wxToolBarToolBase *tool = CreateTool(control, label);
if ( !InsertTool(pos, tool) )
{
event.SetInt(id);
wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
- if( frame )
+ if ( frame )
{
wxString help;
- wxToolBarToolBase* tool = id == wxID_ANY ? (wxToolBarToolBase*)NULL : FindById(id);
- if(tool)
- help = tool->GetLongHelp();
- frame->DoGiveHelp( help, id != wxID_ANY );
+ if ( id != wxID_ANY )
+ {
+ const wxToolBarToolBase * const tool = FindById(id);
+ if ( tool )
+ help = tool->GetLongHelp();
+ }
+
+ // call DoGiveHelp() even if help string is empty to avoid showing the
+ // help for the previously selected tool when another one is selected
+ frame->DoGiveHelp(help, id != wxID_ANY);
}
(void)GetEventHandler()->ProcessEvent(event);
{
wxWindowBase::UpdateWindowUI(flags);
+ // don't waste time updating state of tools in a hidden toolbar
+ if ( !IsShown() )
+ return;
+
// There is no sense in updating the toolbar UI
// if the parent window is about to get destroyed
wxWindow *tlw = wxGetTopLevelParent( this );