X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9a83f860948059b0273b5cc6d9e43fadad3ebfca..6f3f38980f10a935f3b47dbf0d3b4643e96a4be2:/src/common/tbarbase.cpp diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index abc7670961..94d015f155 100644 --- a/src/common/tbarbase.cpp +++ b/src/common/tbarbase.cpp @@ -61,7 +61,10 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolBarToolBase, wxObject) wxToolBarToolBase::~wxToolBarToolBase() { +#if wxUSE_MENUS delete m_dropdownMenu; +#endif + if ( IsControl() ) GetControl()->Destroy(); } @@ -121,11 +124,13 @@ bool wxToolBarToolBase::SetLongHelp(const wxString& help) } +#if wxUSE_MENUS void wxToolBarToolBase::SetDropdownMenu(wxMenu* menu) { delete m_dropdownMenu; m_dropdownMenu = menu; } +#endif // ---------------------------------------------------------------------------- @@ -180,17 +185,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 +228,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 +264,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 +459,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; @@ -747,6 +734,7 @@ void wxToolBarBase::UpdateWindowUI(long flags) } } +#if wxUSE_MENUS bool wxToolBarBase::SetDropdownMenu(int toolid, wxMenu* menu) { wxToolBarToolBase * const tool = FindById(toolid); @@ -759,6 +747,7 @@ bool wxToolBarBase::SetDropdownMenu(int toolid, wxMenu* menu) return true; } +#endif #if WXWIN_COMPATIBILITY_2_8