cleaned up the checkbox creation code (~70 lines of code became 3)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14976 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -63,7 +63,6 @@ bool wxCheckBox::MSWCommand(WXUINT WXUNUSED(param), WXWORD WXUNUSED(id))
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Single check box item
|
|
||||||
bool wxCheckBox::Create(wxWindow *parent,
|
bool wxCheckBox::Create(wxWindow *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxString& label,
|
const wxString& label,
|
||||||
@@ -72,79 +71,14 @@ bool wxCheckBox::Create(wxWindow *parent,
|
|||||||
const wxValidator& validator,
|
const wxValidator& validator,
|
||||||
const wxString& name)
|
const wxString& name)
|
||||||
{
|
{
|
||||||
SetName(name);
|
if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) )
|
||||||
#if wxUSE_VALIDATORS
|
return FALSE;
|
||||||
SetValidator(validator);
|
|
||||||
#endif // wxUSE_VALIDATORS
|
|
||||||
if (parent) parent->AddChild(this);
|
|
||||||
|
|
||||||
SetBackgroundColour(parent->GetBackgroundColour()) ;
|
long msStyle = BS_AUTOCHECKBOX | WS_TABSTOP;
|
||||||
SetForegroundColour(parent->GetForegroundColour()) ;
|
|
||||||
|
|
||||||
m_windowStyle = style;
|
|
||||||
|
|
||||||
// VZ: disabling this ugliness which completely breaks checkboxes in wxGrid
|
|
||||||
// whoever did it, please tell me where and how does the checkbox fail
|
|
||||||
// to appear
|
|
||||||
#if 0
|
|
||||||
wxString Label = label;
|
|
||||||
if (Label == wxT(""))
|
|
||||||
Label = wxT(" "); // Apparently needed or checkbox won't show
|
|
||||||
#endif // 0
|
|
||||||
|
|
||||||
if ( id == -1 )
|
|
||||||
m_windowId = NewControlId();
|
|
||||||
else
|
|
||||||
m_windowId = id;
|
|
||||||
|
|
||||||
int x = pos.x;
|
|
||||||
int y = pos.y;
|
|
||||||
int width = size.x;
|
|
||||||
int height = size.y;
|
|
||||||
|
|
||||||
long msStyle = BS_AUTOCHECKBOX | WS_TABSTOP | WS_CHILD | WS_VISIBLE;
|
|
||||||
if ( style & wxALIGN_RIGHT )
|
if ( style & wxALIGN_RIGHT )
|
||||||
msStyle |= BS_LEFTTEXT;
|
msStyle |= BS_LEFTTEXT;
|
||||||
|
|
||||||
if ( style & wxCLIP_SIBLINGS )
|
return MSWCreateControl(wxT("BUTTON"), msStyle, pos, size, label, 0);
|
||||||
msStyle |= WS_CLIPSIBLINGS;
|
|
||||||
|
|
||||||
// We perhaps have different concepts of 3D here - a 3D border,
|
|
||||||
// versus a 3D button.
|
|
||||||
// So we only wish to give a border if this is specified
|
|
||||||
// in the style.
|
|
||||||
bool want3D;
|
|
||||||
WXDWORD exStyle = Determine3DEffects(0, &want3D) ;
|
|
||||||
|
|
||||||
// Even with extended styles, need to combine with WS_BORDER
|
|
||||||
// for them to look right.
|
|
||||||
/*
|
|
||||||
if ( want3D || wxStyleHasBorder(m_windowStyle) )
|
|
||||||
msStyle |= WS_BORDER;
|
|
||||||
*/
|
|
||||||
|
|
||||||
m_hWnd = (WXHWND)CreateWindowEx(exStyle, wxT("BUTTON"), label,
|
|
||||||
msStyle,
|
|
||||||
0, 0, 0, 0,
|
|
||||||
(HWND)parent->GetHWND(), (HMENU)m_windowId,
|
|
||||||
wxGetInstance(), NULL);
|
|
||||||
|
|
||||||
#if wxUSE_CTL3D
|
|
||||||
if (want3D)
|
|
||||||
{
|
|
||||||
Ctl3dSubclassCtl(GetHwnd());
|
|
||||||
m_useCtl3D = TRUE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Subclass again for purposes of dialog editing mode
|
|
||||||
SubclassWin(m_hWnd);
|
|
||||||
|
|
||||||
SetFont(parent->GetFont());
|
|
||||||
|
|
||||||
SetSize(x, y, width, height);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxCheckBox::SetLabel(const wxString& label)
|
void wxCheckBox::SetLabel(const wxString& label)
|
||||||
|
Reference in New Issue
Block a user