Fix setting colours for the edit control part of wxComboBox.
Recognize this control as part of wxComboBox and so handle WM_CTLCOLOR for it. To do this, override ContainsHWND() in wxComboBox and use it, on the parent window, in wxControl::DoMSWControlColor(), if we fail to find the window directly. Closes #811. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72468 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -367,7 +367,23 @@ WXHBRUSH wxControl::DoMSWControlColor(WXHDC pDC, wxColour colBg, WXHWND hWnd)
|
||||
WXHBRUSH hbr = 0;
|
||||
if ( !colBg.IsOk() )
|
||||
{
|
||||
if ( wxWindow *win = wxFindWinFromHandle(hWnd) )
|
||||
wxWindow *win = wxFindWinFromHandle( hWnd );
|
||||
if ( !win )
|
||||
{
|
||||
// If this HWND doesn't correspond to a wxWindow, it still might be
|
||||
// one of its children for which we need to set the background
|
||||
// brush, e.g. this is the case for the EDIT control that is part
|
||||
// of wxComboBox. Check for this by asking the parent if it has it:
|
||||
HWND parent = ::GetParent(hWnd);
|
||||
if ( parent )
|
||||
{
|
||||
wxWindow *winParent = wxFindWinFromHandle( parent );
|
||||
if( winParent && winParent->ContainsHWND( hWnd ) )
|
||||
win = winParent;
|
||||
}
|
||||
}
|
||||
|
||||
if ( win )
|
||||
hbr = win->MSWGetBgBrush(pDC);
|
||||
|
||||
// if the control doesn't have any bg colour, foreground colour will be
|
||||
|
Reference in New Issue
Block a user