oops, forgot to commit yesterday changes related to wxStatusBarBase
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12009 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -40,12 +40,6 @@
|
|||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// wxWindows macros
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxStatusBar95, wxWindow);
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// macros
|
// macros
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -128,39 +122,18 @@ wxStatusBar95::~wxStatusBar95()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxStatusBar95::CopyFieldsWidth(const int widths[])
|
|
||||||
{
|
|
||||||
if (widths && !m_statusWidths)
|
|
||||||
m_statusWidths = new int[m_nFields];
|
|
||||||
|
|
||||||
if ( widths != NULL )
|
|
||||||
{
|
|
||||||
for ( int i = 0; i < m_nFields; i++ )
|
|
||||||
m_statusWidths[i] = widths[i];
|
|
||||||
}
|
|
||||||
else // no widths
|
|
||||||
{
|
|
||||||
delete [] m_statusWidths;
|
|
||||||
m_statusWidths = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxStatusBar95::SetFieldsCount(int nFields, const int *widths)
|
void wxStatusBar95::SetFieldsCount(int nFields, const int *widths)
|
||||||
{
|
{
|
||||||
// this is a Windows limitation
|
// this is a Windows limitation
|
||||||
wxASSERT_MSG( (nFields > 0) && (nFields < 255), _T("too many fields") );
|
wxASSERT_MSG( (nFields > 0) && (nFields < 255), _T("too many fields") );
|
||||||
|
|
||||||
m_nFields = nFields;
|
wxStatusBarBase::SetFieldsCount(nFields, widths);
|
||||||
|
|
||||||
CopyFieldsWidth(widths);
|
|
||||||
SetFieldsWidth();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxStatusBar95::SetStatusWidths(int WXUNUSED_UNLESS_DEBUG(n), const int widths[])
|
void wxStatusBar95::SetStatusWidths(int n, const int widths[])
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( n == m_nFields, _T("field number mismatch") );
|
wxStatusBarBase::SetStatusWidths(n, widths);
|
||||||
|
|
||||||
CopyFieldsWidth(widths);
|
|
||||||
SetFieldsWidth();
|
SetFieldsWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,46 +147,15 @@ void wxStatusBar95::SetFieldsWidth()
|
|||||||
|
|
||||||
int extraWidth = aBorders[2]; // space between fields
|
int extraWidth = aBorders[2]; // space between fields
|
||||||
|
|
||||||
|
wxArrayInt widthsAbs =
|
||||||
|
CalculateAbsWidths(GetClientSize().x - extraWidth*(m_nFields - 1));
|
||||||
|
|
||||||
int *pWidths = new int[m_nFields];
|
int *pWidths = new int[m_nFields];
|
||||||
|
|
||||||
int nWindowWidth, y;
|
int nCurPos = 0;
|
||||||
GetClientSize(&nWindowWidth, &y);
|
for ( int i = 0; i < m_nFields; i++ ) {
|
||||||
|
nCurPos += widthsAbs[i] + extraWidth;
|
||||||
if ( m_statusWidths == NULL ) {
|
pWidths[i] = nCurPos;
|
||||||
// default: all fields have the same width
|
|
||||||
int nWidth = nWindowWidth / m_nFields;
|
|
||||||
for ( int i = 0; i < m_nFields; i++ )
|
|
||||||
pWidths[i] = (i + 1) * nWidth;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// -1 doesn't mean the same thing for wxWindows and Win32, recalc
|
|
||||||
int nTotalWidth = 0,
|
|
||||||
nVarCount = 0,
|
|
||||||
i;
|
|
||||||
for ( i = 0; i < m_nFields; i++ ) {
|
|
||||||
if ( m_statusWidths[i] == -1 )
|
|
||||||
nVarCount++;
|
|
||||||
else
|
|
||||||
nTotalWidth += m_statusWidths[i] + extraWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( nVarCount == 0 ) {
|
|
||||||
wxFAIL_MSG( _T("at least one field must be of variable width") );
|
|
||||||
|
|
||||||
nVarCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nVarWidth = (nWindowWidth - nTotalWidth) / nVarCount;
|
|
||||||
|
|
||||||
// do fill the array
|
|
||||||
int nCurPos = 0;
|
|
||||||
for ( i = 0; i < m_nFields; i++ ) {
|
|
||||||
if ( m_statusWidths[i] == -1 )
|
|
||||||
nCurPos += nVarWidth;
|
|
||||||
else
|
|
||||||
nCurPos += m_statusWidths[i] + extraWidth;
|
|
||||||
pWidths[i] = nCurPos;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !StatusBar_SetParts(GetHwnd(), m_nFields, pWidths) ) {
|
if ( !StatusBar_SetParts(GetHwnd(), m_nFields, pWidths) ) {
|
||||||
|
Reference in New Issue
Block a user