X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e11f46363fedb4fd0d2a462a8060bb8dd679b2a0..aa154cb1578ba9d44c7e24c5e76d8238bf8809d0:/src/common/wincmn.cpp diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 5c39f36e9d..1f80f28ee9 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -186,12 +186,14 @@ wxWindowBase::wxWindowBase() #endif m_virtualSize = wxDefaultSize; - + m_minVirtualWidth = m_minVirtualHeight = m_maxVirtualWidth = m_maxVirtualHeight = -1; + m_windowVariant = wxWINDOW_VARIANT_DEFAULT ; + // Whether we're using the current theme for this window (wxGTK only for now) m_themeEnabled = false; } @@ -621,6 +623,43 @@ void wxWindowBase::SetSizeHints(int minW, int minH, m_maxHeight = maxH; } +void wxWindowBase::SetWindowVariant( wxWindowVariant variant ) +{ + if ( m_windowVariant == variant ) + return ; + + m_windowVariant = variant ; + + DoSetWindowVariant( variant ) ; + return ; +} + +void wxWindowBase::DoSetWindowVariant( wxWindowVariant variant ) +{ + wxFont font = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) ; + int size = font.GetPointSize() ; + switch ( variant ) + { + case wxWINDOW_VARIANT_NORMAL : + break ; + case wxWINDOW_VARIANT_SMALL : + font.SetPointSize( size * 3 / 4 ) ; + break ; + case wxWINDOW_VARIANT_MINI : + font.SetPointSize( size * 2 / 3 ) ; + break ; + case wxWINDOW_VARIANT_LARGE : + font.SetPointSize( size * 5 / 4 ) ; + break ; + case wxWINDOW_VARIANT_DEFAULT : + break ; + default: + wxFAIL_MSG(_T("unexpected window variant")); + break ; + } + SetFont( font ) ; +} + void wxWindowBase::SetVirtualSizeHints( int minW, int minH, int maxW, int maxH ) { @@ -1466,6 +1505,9 @@ void wxWindowBase::DeleteRelatedConstraints() void wxWindowBase::SetSizer(wxSizer *sizer, bool deleteOld) { + if ( sizer == m_windowSizer) + return; + if ( deleteOld ) delete m_windowSizer;