void wxStatusBar95::DoMoveWindow(int x, int y, int width, int height) { if ( GetParent()->IsSizeDeferred() ) { wxWindowMSW::DoMoveWindow(x, y, width, height); } else { // parent pos/size isn't deferred so do it now but don't send // WM_WINDOWPOSCHANGING since we don't want to change pos/size later // we must use SWP_NOCOPYBITS here otherwise it paints incorrectly // if other windows are size deferred ::SetWindowPos(GetHwnd(), NULL, x, y, width, height, SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOACTIVATE #ifndef __WXWINCE__ | SWP_NOCOPYBITS | SWP_NOSENDCHANGING #endif ); } // adjust fields widths to the new size SetFieldsWidth(); // 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 ) { wxSizeEvent event(GetClientSize(), m_windowId); event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } }
void wxStatusBarBeOS::SetFieldsCount(int nFields, const int *widths) { // this is a Windows limitation wxASSERT_MSG( (nFields > 0) && (nFields < 255), _T("too many fields") ); wxStatusBarBase::SetFieldsCount(nFields, widths); SetFieldsWidth(); }
void wxStatusBarBeOS::SetStatusWidths(int n, const int widths[]) { wxStatusBarBase::SetStatusWidths(n, widths); SetFieldsWidth(); }