X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d3d0974f0f4ea623b5255db0b70b5e8374bf9d3f..121fa06ab6af9129e776af13949fc251a3cafc49:/src/common/tbarbase.cpp?ds=sidebyside diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index 36d6474ab4..2496b8a974 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) @@ -63,6 +63,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolBarToolBase, wxObject) bool wxToolBarToolBase::Enable(bool enable) { + if ( m_enabled == enable ) + return false; + m_enabled = enable; return true; @@ -72,6 +75,9 @@ bool wxToolBarToolBase::Toggle(bool toggle) { wxASSERT_MSG( CanBeToggled(), _T("can't toggle this tool") ); + if ( m_toggled == toggle ) + return false; + m_toggled = toggle; return true; @@ -80,6 +86,8 @@ bool wxToolBarToolBase::Toggle(bool toggle) bool wxToolBarToolBase::SetToggle(bool toggle) { wxItemKind kind = toggle ? wxITEM_CHECK : wxITEM_NORMAL; + if ( m_kind == kind ) + return false; m_kind = kind; @@ -88,6 +96,9 @@ bool wxToolBarToolBase::SetToggle(bool toggle) bool wxToolBarToolBase::SetShortHelp(const wxString& help) { + if ( m_shortHelpString == help ) + return false; + m_shortHelpString = help; return true; @@ -95,6 +106,9 @@ bool wxToolBarToolBase::SetShortHelp(const wxString& help) bool wxToolBarToolBase::SetLongHelp(const wxString& help) { + if ( m_longHelpString == help ) + return false; + m_longHelpString = help; return true; @@ -127,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); } @@ -607,6 +622,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();