X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3304646d0657d889ad676485a4b635e2032b0038..d8fc3398ac61229b4986a6c72eb17af98f41123e:/src/common/statbar.cpp diff --git a/src/common/statbar.cpp b/src/common/statbar.cpp index 8e51e041ba..36f0ac976e 100644 --- a/src/common/statbar.cpp +++ b/src/common/statbar.cpp @@ -24,17 +24,19 @@ #pragma hdrstop #endif +#if wxUSE_STATUSBAR + #include "wx/statusbr.h" #ifndef WX_PRECOMP #include "wx/frame.h" #endif //WX_PRECOMP -#if wxUSE_STATUSBAR - #include "wx/listimpl.cpp" WX_DEFINE_LIST(wxListString) +const char wxStatusBarNameStr[] = "statusBar"; + // ============================================================================ // wxStatusBarBase implementation // ============================================================================ @@ -220,12 +222,21 @@ wxArrayInt wxStatusBarBase::CalculateAbsWidths(wxCoord widthTotal) const { if ( m_nFields ) { - // default: all fields have the same width - int nWidth = widthTotal / m_nFields; - for ( int i = 0; i < m_nFields; i++ ) + // Default: all fields have the same width. This is not always + // possible to do exactly (if widthTotal is not divisible by + // m_nFields) - if that happens, we distribute the extra pixels + // among all fields: + int widthToUse = widthTotal; + + for ( int i = m_nFields; i > 0; i-- ) { - widths.Add(nWidth); + // divide the unassigned width evently between the + // not yet processed fields: + int w = widthToUse / i; + widths.Add(w); + widthToUse -= w; } + } //else: we're empty anyhow }