No changes, just slightly simplify the tool insertion code.
Added a helper DoInsertNewTool() function to avoid code duplication and ensure that we never forget to delete a new tool if inserting it into the toolbar failed. Also explicitly document that the tool passed to the public InsertTool() is not owned by the toolbar and so must be deleted by the caller if its insertion failed. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62846 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -180,17 +180,8 @@ wxToolBarToolBase *wxToolBarBase::InsertTool(size_t pos,
|
||||
wxCHECK_MSG( pos <= GetToolsCount(), NULL,
|
||||
wxT("invalid position in wxToolBar::InsertTool()") );
|
||||
|
||||
wxToolBarToolBase *tool = CreateTool(id, label, bitmap, bmpDisabled, kind,
|
||||
clientData, shortHelp, longHelp);
|
||||
|
||||
if ( !InsertTool(pos, tool) )
|
||||
{
|
||||
delete tool;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return tool;
|
||||
return DoInsertNewTool(pos, CreateTool(id, label, bitmap, bmpDisabled, kind,
|
||||
clientData, shortHelp, longHelp));
|
||||
}
|
||||
|
||||
wxToolBarToolBase *wxToolBarBase::AddTool(wxToolBarToolBase *tool)
|
||||
@@ -232,19 +223,7 @@ wxToolBarBase::InsertControl(size_t pos,
|
||||
wxCHECK_MSG( control->GetParent() == this, NULL,
|
||||
wxT("control must have toolbar as parent") );
|
||||
|
||||
wxCHECK_MSG( pos <= GetToolsCount(), NULL,
|
||||
wxT("invalid position in wxToolBar::InsertControl()") );
|
||||
|
||||
wxToolBarToolBase *tool = CreateTool(control, label);
|
||||
|
||||
if ( !InsertTool(pos, tool) )
|
||||
{
|
||||
delete tool;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return tool;
|
||||
return DoInsertNewTool(pos, CreateTool(control, label));
|
||||
}
|
||||
|
||||
wxControl *wxToolBarBase::FindControl( int id )
|
||||
@@ -280,25 +259,11 @@ wxToolBarToolBase *wxToolBarBase::AddSeparator()
|
||||
|
||||
wxToolBarToolBase *wxToolBarBase::InsertSeparator(size_t pos)
|
||||
{
|
||||
wxCHECK_MSG( pos <= GetToolsCount(), NULL,
|
||||
wxT("invalid position in wxToolBar::InsertSeparator()") );
|
||||
|
||||
wxToolBarToolBase *tool = CreateTool(wxID_SEPARATOR,
|
||||
wxEmptyString,
|
||||
wxNullBitmap, wxNullBitmap,
|
||||
wxITEM_SEPARATOR, NULL,
|
||||
wxEmptyString, wxEmptyString);
|
||||
|
||||
if ( !tool || !DoInsertTool(pos, tool) )
|
||||
{
|
||||
delete tool;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
m_tools.Insert(pos, tool);
|
||||
|
||||
return tool;
|
||||
return DoInsertNewTool(pos, CreateTool(wxID_SEPARATOR,
|
||||
wxEmptyString,
|
||||
wxNullBitmap, wxNullBitmap,
|
||||
wxITEM_SEPARATOR, NULL,
|
||||
wxEmptyString, wxEmptyString));
|
||||
}
|
||||
|
||||
wxToolBarToolBase *wxToolBarBase::RemoveTool(int id)
|
||||
|
Reference in New Issue
Block a user