X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a2d93e735a9f126b855a9353ca8ddeacaaf52817..cffbfebc684e000e4fd859b05b2f6fabae633c8a:/src/common/wincmn.cpp diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index ef975509ea..4e57c5fb9d 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -127,14 +127,16 @@ void wxWindowBase::InitBase() #endif // wxUSE_VALIDATORS // use the system default colours - wxSystemSettings settings; - - m_backgroundColour = settings.GetSystemColour(wxSYS_COLOUR_BTNFACE); - // m_foregroundColour = *wxBLACK; // TODO take this from sys settings too? + m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNFACE); m_foregroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT); - // GRG, changed Mar/2000 - m_font = settings.GetSystemFont(wxSYS_DEFAULT_GUI_FONT); + // don't set the font here for wxMSW as we don't call WM_SETFONT here and + // so the font is *not* really set - but calls to SetFont() later won't do + // anything because m_font appears to be already set! +#ifndef __WXMSW__ + m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); +#endif // __WXMSW__ + // no style bits m_exStyle = m_windowStyle = 0; @@ -393,8 +395,9 @@ void wxWindowBase::Centre(int direction) xNew += posParent.x; yNew += posParent.y; - // move the centre of this window to this position - Move(xNew, yNew); + // move the window to this position (keeping the old size but using + // SetSize() and not Move() to allow xNew and/or yNew to be -1) + SetSize(xNew, yNew, width, height, wxSIZE_ALLOW_MINUS_ONE); } // fits the window around the children @@ -402,7 +405,14 @@ void wxWindowBase::Fit() { if ( GetChildren().GetCount() > 0 ) { - SetClientSize(DoGetBestSize()); + wxSize size = DoGetBestSize(); + + // for compatibility with the old versions and because it really looks + // slightly more pretty like this, add a pad + size.x += 7; + size.y += 14; + + SetClientSize(size); } //else: do nothing if we have no children } @@ -421,7 +431,7 @@ wxSize wxWindowBase::DoGetBestSize() const node = node->GetNext() ) { wxWindow *win = node->GetData(); - if ( win->IsTopLevel() || wxDynamicCast(win, wxStatusBar) ) + if ( win->IsTopLevel() || wxDynamicCast(win, wxStatusBar) || !win->IsShown()) { // dialogs and frames lie in different top level windows - // don't deal with them here; as for the status bars, they @@ -446,8 +456,7 @@ wxSize wxWindowBase::DoGetBestSize() const maxY = wy + wh; } - // leave a margin - return wxSize(maxX + 7, maxY + 14); + return wxSize(maxX, maxY); } else { @@ -637,7 +646,7 @@ bool wxWindowBase::SetFont(const wxFont& font) // don't try to set invalid font, always fall back to the default const wxFont& fontOk = font.Ok() ? font : *wxSWISS_FONT; - if ( (wxFont&)fontOk == m_font ) + if ( fontOk == m_font ) { // no change return FALSE;