X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/93fbbe07650f0f5b47a162081160007b4d9e3b87..091e74e76b63f04a4058995c5dcc6f5b8b6db362:/src/msw/control.cpp diff --git a/src/msw/control.cpp b/src/msw/control.cpp index 73a8f2511a..54fd80129e 100644 --- a/src/msw/control.cpp +++ b/src/msw/control.cpp @@ -29,6 +29,7 @@ #include "wx/control.h" #ifndef WX_PRECOMP + #include "wx/msw/wrapcctl.h" // include "properly" #include "wx/event.h" #include "wx/app.h" #include "wx/dcclient.h" @@ -47,9 +48,6 @@ #include "wx/msw/private.h" #include "wx/msw/uxtheme.h" -// include "properly" -#include "wx/msw/wrapcctl.h" - // ---------------------------------------------------------------------------- // wxWin macros // ---------------------------------------------------------------------------- @@ -164,6 +162,10 @@ bool wxControl::MSWCreateControl(const wxChar *classname, return false; } + // saving the label in m_labelOrig to return it verbatim + // later in GetLabel() + m_labelOrig = label; + // install wxWidgets window proc for this window SubclassWin(m_hWnd); @@ -171,11 +173,27 @@ bool wxControl::MSWCreateControl(const wxChar *classname, InheritAttributes(); if ( !m_hasFont ) { -#if wxUSE_LISTCTRL || wxUSE_TREECTRL + bool setFont = true; + + wxFont font = GetDefaultAttributes().font; + // if we set a font for {list,tree}ctrls and the font size is changed in // the display properties then the font size for these controls doesn't // automatically adjust when they receive WM_SETTINGCHANGE - if ( wxDynamicCastThis(wxListCtrl) || wxDynamicCastThis(wxTreeCtrl) ) + + // FIXME: replace the dynamic casts with virtual function calls!! +#if wxUSE_LISTCTRL || wxUSE_TREECTRL + bool testFont = false; +#if wxUSE_LISTCTRL + if ( wxDynamicCastThis(wxListCtrl) ) + testFont = true; +#endif // wxUSE_LISTCTRL +#if wxUSE_TREECTRL + if ( wxDynamicCastThis(wxTreeCtrl) ) + testFont = true; +#endif // wxUSE_TREECTRL + + if ( testFont ) { // not sure if we need to explicitly set the font here for Win95/NT4 // but we definitely can't do it for any newer version @@ -184,21 +202,21 @@ bool wxControl::MSWCreateControl(const wxChar *classname, // TODO: test Win95/NT4 to see if this is needed or breaks the // font resizing as it does on newer versions - wxFont font = GetDefaultAttributes().font; - if ( font == wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) ) + if ( font != wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) ) { - SetFont(font); + setFont = false; } } - else #endif // wxUSE_LISTCTRL || wxUSE_TREECTRL + + if ( setFont ) { SetFont(GetDefaultAttributes().font); } } // set the size now if no initial size specified - SetInitialBestSize(size); + SetInitialSize(size); return true; } @@ -223,7 +241,7 @@ WXDWORD wxControl::MSWGetStyle(long style, WXDWORD *exstyle) const { long msStyle = wxWindow::MSWGetStyle(style, exstyle); - if ( AcceptsFocus() ) + if ( AcceptsFocusFromKeyboard() ) { msStyle |= WS_TABSTOP; } @@ -384,14 +402,15 @@ WXHBRUSH wxControl::DoMSWControlColor(WXHDC pDC, wxColour colBg, WXHWND hWnd) hbr = (WXHBRUSH)brush->GetResourceHandle(); - // if we use custom background, we should set foreground ourselves too - if ( !m_hasFgCol ) - { - ::SetTextColor(hdc, ::GetSysColor(COLOR_WINDOWTEXT)); - } - //else: already set above } + // if we use custom background, we should set foreground ourselves too + if ( hbr && !m_hasFgCol ) + { + ::SetTextColor(hdc, ::GetSysColor(COLOR_WINDOWTEXT)); + } + //else: already set above + return hbr; }