X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1a83b9bd10b7d92520c202e6ed6cff2015f13315..137c8bde085d6d5b7c459902d2ea1a198ab48765:/src/common/statbar.cpp diff --git a/src/common/statbar.cpp b/src/common/statbar.cpp index 76278969ea..8e51e041ba 100644 --- a/src/common/statbar.cpp +++ b/src/common/statbar.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: common/statbar.cpp +// Name: src/common/statbar.cpp // Purpose: wxStatusBarBase implementation // Author: Vadim Zeitlin // Modified by: @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "statbar.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -28,14 +24,16 @@ #pragma hdrstop #endif +#include "wx/statusbr.h" + #ifndef WX_PRECOMP - #include "wx/statusbr.h" + #include "wx/frame.h" #endif //WX_PRECOMP #if wxUSE_STATUSBAR #include "wx/listimpl.cpp" -WX_DEFINE_LIST(wxListString); +WX_DEFINE_LIST(wxListString) // ============================================================================ // wxStatusBarBase implementation @@ -60,7 +58,15 @@ wxStatusBarBase::~wxStatusBarBase() { FreeWidths(); FreeStacks(); - InitStyles(); + FreeStyles(); + + // notify the frame that it doesn't have a status bar any longer to avoid + // dangling pointers + wxFrame *frame = wxDynamicCast(GetParent(), wxFrame); + if ( frame && frame->GetStatusBar() == this ) + { + frame->SetStatusBar(NULL); + } } // ---------------------------------------------------------------------------- @@ -99,7 +105,7 @@ void wxStatusBarBase::SetFieldsCount(int number, const int *widths) { wxCHECK_RET( number > 0, _T("invalid field number in SetFieldsCount") ); - bool refresh = FALSE; + bool refresh = false; if ( number != m_nFields ) { @@ -152,7 +158,7 @@ void wxStatusBarBase::SetFieldsCount(int number, const int *widths) ReinitWidths(); - refresh = TRUE; + refresh = true; } //else: keep the old m_statusWidths if we had them @@ -161,7 +167,7 @@ void wxStatusBarBase::SetFieldsCount(int number, const int *widths) SetStatusWidths(number, widths); // already done from SetStatusWidths() - refresh = FALSE; + refresh = false; } if ( refresh ) @@ -276,12 +282,12 @@ void wxStatusBarBase::InitStacks() void wxStatusBarBase::FreeStacks() { - if(!m_statusTextStacks) return; - size_t i; + if ( !m_statusTextStacks ) + return; - for(i = 0; i < (size_t)m_nFields; ++i) + for ( size_t i = 0; i < (size_t)m_nFields; ++i ) { - if(m_statusTextStacks[i]) + if ( m_statusTextStacks[i] ) { wxListString& t = *m_statusTextStacks[i]; WX_CLEAR_LIST(wxListString, t); @@ -349,4 +355,3 @@ wxListString *wxStatusBarBase::GetOrCreateStatusStack(int i) } #endif // wxUSE_STATUSBAR -