]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/tbarbase.cpp
construct brush used for painting disabled bitmap buttons dynamically (heavily modifi...
[wxWidgets.git] / src / common / tbarbase.cpp
index 36d6474ab45ae3fa164bab440c962b7a42baa312..2496b8a9749f95617a530d51c375fd42025ffa78 100644 (file)
@@ -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();