X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/331c9f56a44039554ae639b1733ee8ea2022bdd5..f5698096606b5a3d399018a20135f41d5ba05215:/src/common/tbarbase.cpp?ds=inline diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index 62ec150e49..69f106b9ee 100644 --- a/src/common/tbarbase.cpp +++ b/src/common/tbarbase.cpp @@ -41,7 +41,7 @@ #include "wx/toolbar.h" // ---------------------------------------------------------------------------- -// wxWindows macros +// wxWidgets macros // ---------------------------------------------------------------------------- BEGIN_EVENT_TABLE(wxToolBarBase, wxControl) @@ -59,6 +59,8 @@ WX_DEFINE_LIST(wxToolBarToolsList); // wxToolBarToolBase // ---------------------------------------------------------------------------- +IMPLEMENT_DYNAMIC_CLASS(wxToolBarToolBase, wxObject) + bool wxToolBarToolBase::Enable(bool enable) { if ( m_enabled == enable ) @@ -139,6 +141,7 @@ wxToolBarToolBase *wxToolBarBase::DoAddTool(int id, wxCoord WXUNUSED(xPos), wxCoord WXUNUSED(yPos)) { + InvalidateBestSize(); return InsertTool(GetToolsCount(), id, label, bitmap, bmpDisabled, kind, shortHelp, longHelp, clientData); } @@ -382,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(); } @@ -395,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(); } @@ -589,7 +598,7 @@ void wxToolBarBase::OnRightClick(int id, } // Called when the mouse cursor enters a tool bitmap (no button pressed). -// Argument is -1 if mouse is exiting the toolbar. +// Argument is wxID_ANY if mouse is exiting the toolbar. // Note that for this event, the id of the window is used, // and the integer parameter of wxCommandEvent is used to retrieve // the tool id. @@ -602,9 +611,9 @@ void wxToolBarBase::OnMouseEnter(int id) wxFrame *frame = wxDynamicCast(GetParent(), wxFrame); if( frame ) { - wxToolBarToolBase* tool = id == -1 ? (wxToolBarToolBase*)0 : FindById(id); + wxToolBarToolBase* tool = id == wxID_ANY ? (wxToolBarToolBase*)0 : FindById(id); wxString help = tool ? tool->GetLongHelp() : wxString(); - frame->DoGiveHelp( help, id != -1 ); + frame->DoGiveHelp( help, id != wxID_ANY ); } (void)GetEventHandler()->ProcessEvent(event); @@ -619,6 +628,12 @@ void wxToolBarBase::UpdateWindowUI(long flags) { wxWindowBase::UpdateWindowUI(flags); + // There is no sense in updating the toolbar UI + // if the parent window is about to get destroyed + wxWindow *tlw = wxGetTopLevelParent( this ); + if (tlw && wxPendingDelete.Member( tlw )) + return; + wxEvtHandler* evtHandler = GetEventHandler() ; for ( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();