long style,
const wxString& name)
{
- wxCHECK_MSG( parent, FALSE, wxT("status bar must have a parent") );
+ wxCHECK_MSG( parent, false, wxT("status bar must have a parent") );
SetName(name);
SetWindowStyleFlag(style);
parent->AddChild(this);
- m_windowId = id == -1 ? NewControlId() : id;
+ m_windowId = id == wxID_ANY ? NewControlId() : id;
DWORD wstyle = WS_CHILD | WS_VISIBLE;
{
wxLogSysError(_("Failed to create a status bar."));
- return FALSE;
+ return false;
}
SetFieldsCount(1);
InheritAttributes();
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR));
+
+ // we must refresh the frame size when the statusbar is created, because
+ // its client area might change
+ wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
+ if ( frame )
+ {
+ frame->SendSizeEvent();
+ }
- return TRUE;
+ return true;
}
wxStatusBar95::~wxStatusBar95()
{
+ // we must refresh the frame size when the statusbar is deleted but the
+ // frame is not - otherwise statusbar leaves a hole in the place it used to
+ // occupy
+ wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
+ if ( frame && !frame->IsBeingDeleted() )
+ {
+ frame->SendSizeEvent();
+ }
}
void wxStatusBar95::SetFieldsCount(int nFields, const int *widths)
bool wxStatusBar95::GetFieldRect(int i, wxRect& rect) const
{
- wxCHECK_MSG( (i >= 0) && (i < m_nFields), FALSE,
+ wxCHECK_MSG( (i >= 0) && (i < m_nFields), false,
_T("invalid statusbar field index") );
RECT r;
wxCopyRECTToRect(r, rect);
- return TRUE;
+ return true;
}
void wxStatusBar95::DoMoveWindow(int x, int y, int width, int height)
// adjust fields widths to the new size
SetFieldsWidth();
- // we have to trigger wxSizeEvent if there are children window in status
+ // we have to trigger wxSizeEvent if there are children window in status
// bar because GetFieldRect returned incorrect (not updated) values up to
// here, which almost certainly resulted in incorrectly redrawn statusbar
if ( m_children.GetCount() > 0 )