X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/54e18afcca6b75bfaf9dd1f12f4a255df8ae089d..47e105413fda3097f4ff5a3d9a224b8123aa5501:/src/common/statbar.cpp?ds=sidebyside diff --git a/src/common/statbar.cpp b/src/common/statbar.cpp index 1bc31fd559..323ce920e0 100644 --- a/src/common/statbar.cpp +++ b/src/common/statbar.cpp @@ -41,8 +41,8 @@ const char wxStatusBarNameStr[] = "statusBar"; IMPLEMENT_DYNAMIC_CLASS(wxStatusBar, wxWindow) -#include // This is a magic incantation which must be done! -WX_DEFINE_OBJARRAY(wxStatusBarPaneArray); +#include "wx/arrimpl.cpp" // This is a magic incantation which must be done! +WX_DEFINE_OBJARRAY(wxStatusBarPaneArray) // ---------------------------------------------------------------------------- @@ -58,7 +58,7 @@ wxStatusBarBase::~wxStatusBarBase() { // notify the frame that it doesn't have a status bar any longer to avoid // dangling pointers - wxFrame *frame = dynamic_cast(GetParent()); + wxFrame *frame = wxDynamicCast(GetParent(), wxFrame); if ( frame && frame->GetStatusBar() == this ) frame->SetStatusBar(NULL); } @@ -86,35 +86,35 @@ void wxStatusBarBase::SetFieldsCount(int number, const int *widths) m_panes.RemoveAt(number, m_panes.GetCount()-number); } - // SetStatusWidths will automatically refresh - SetStatusWidths(number, widths); + // SetStatusWidths will automatically refresh + SetStatusWidths(number, widths); } void wxStatusBarBase::SetStatusWidths(int WXUNUSED_UNLESS_DEBUG(n), - const int widths[]) + const int widths[]) { wxASSERT_MSG( (size_t)n == m_panes.GetCount(), _T("field number mismatch") ); if (widths == NULL) - { - // special value meaning: override explicit pane widths and make them all - // of the same size - m_bSameWidthForAllPanes = true; - } - else - { - for ( size_t i = 0; i < m_panes.GetCount(); i++ ) - m_panes[i].nWidth = widths[i]; - - m_bSameWidthForAllPanes = false; - } + { + // special value meaning: override explicit pane widths and make them all + // of the same size + m_bSameWidthForAllPanes = true; + } + else + { + for ( size_t i = 0; i < m_panes.GetCount(); i++ ) + m_panes[i].nWidth = widths[i]; + + m_bSameWidthForAllPanes = false; + } // update the display after the widths changed Refresh(); } void wxStatusBarBase::SetStatusStyles(int WXUNUSED_UNLESS_DEBUG(n), - const int styles[]) + const int styles[]) { wxCHECK_RET( styles, _T("NULL pointer in SetStatusStyles") ); @@ -153,8 +153,8 @@ wxArrayInt wxStatusBarBase::CalculateAbsWidths(wxCoord widthTotal) const // calculate the total width of all the fixed width fields and the // total number of var field widths counting with multiplicity size_t nTotalWidth = 0, - nVarCount = 0, - i; + nVarCount = 0, + i; for ( i = 0; i < m_panes.GetCount(); i++ ) { @@ -194,12 +194,15 @@ void wxStatusBarBase::PushStatusText(const wxString& text, int number) // save current status text in the stack m_panes[number].arrStack.push_back(GetStatusText(number)); - // update current status text SetStatusText(text, number); + // update current status text (eventually also in the native control) } void wxStatusBarBase::PopStatusText(int number) { + wxASSERT_MSG(m_panes[number].arrStack.GetCount() == 1, + "can't pop any further string"); + wxString text = m_panes[number].arrStack.back(); m_panes[number].arrStack.pop_back(); // also remove it from the stack