X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9a83f860948059b0273b5cc6d9e43fadad3ebfca..a7d354c6d75a32033f62b8ecadd837519b35b3ef:/src/common/tbarbase.cpp diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index abc7670961..f6bc3617dc 100644 --- a/src/common/tbarbase.cpp +++ b/src/common/tbarbase.cpp @@ -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,29 @@ wxToolBarToolBase *wxToolBarBase::AddSeparator() wxToolBarToolBase *wxToolBarBase::InsertSeparator(size_t pos) { - wxCHECK_MSG( pos <= GetToolsCount(), NULL, - wxT("invalid position in wxToolBar::InsertSeparator()") ); + return DoInsertNewTool(pos, CreateSeparator()); +} - wxToolBarToolBase *tool = CreateTool(wxID_SEPARATOR, - wxEmptyString, - wxNullBitmap, wxNullBitmap, - wxITEM_SEPARATOR, NULL, - wxEmptyString, wxEmptyString); +wxToolBarToolBase *wxToolBarBase::AddStretchableSpace() +{ + return InsertStretchableSpace(GetToolsCount()); +} - if ( !tool || !DoInsertTool(pos, tool) ) +wxToolBarToolBase *wxToolBarBase::InsertStretchableSpace(size_t pos) +{ + wxToolBarToolBase * const tool = CreateSeparator(); + if ( tool ) { - delete tool; - - return NULL; + // this is a hack but we know that all the current implementations + // don't really use the tool when it's created, they will do it + // InsertTool() at earliest and maybe even in Realize() much later + // + // so we can create the tool as a plain separator and mark it as being + // a stretchable space later + tool->MakeStretchable(); } - m_tools.Insert(pos, tool); - - return tool; + return DoInsertNewTool(pos, tool); } wxToolBarToolBase *wxToolBarBase::RemoveTool(int id) @@ -471,8 +454,7 @@ bool wxToolBarBase::Realize() if ( m_tools.empty() ) return false; - // make sure tool size is larger enough for all all bitmaps to fit in - // (this is consistent with what other ports do): + // make sure tool size is large enough for all bitmaps to fit in AdjustToolBitmapSize(); return true;