diff --git a/samples/render/render.cpp b/samples/render/render.cpp index 4586ef580e..b08be85b46 100644 --- a/samples/render/render.cpp +++ b/samples/render/render.cpp @@ -135,6 +135,20 @@ public: wxRendererNative::Get().DrawHeaderButton(this, dc, wxRect(20, 70, 100, 60)); + + // Draw some check boxes in various states + dc.SetBrush(*wxBLACK_BRUSH); + dc.SetTextForeground(*wxBLACK); + dc.DrawText(_T("Checkbox Drawn with native renderer"), 10, 150); + // Checked + wxRendererNative::Get().DrawCheckBox(this, dc, wxRect(20, 170, 16, 16), wxCONTROL_CHECKED); + // Undetermined + wxRendererNative::Get().DrawCheckBox(this, dc, wxRect(40, 170, 16, 16), wxCONTROL_CHECKABLE); + // Unchecked + wxRendererNative::Get().DrawCheckBox(this, dc, wxRect(60, 170, 16, 16), 0); + // Checked and Disabled + wxRendererNative::Get().DrawCheckBox(this, dc, wxRect(80, 170, 16, 16), wxCONTROL_CHECKED | wxCONTROL_DISABLED); + } DECLARE_EVENT_TABLE() diff --git a/src/mac/carbon/renderer.cpp b/src/mac/carbon/renderer.cpp index 2afc7a44df..7cb52a16f2 100644 --- a/src/mac/carbon/renderer.cpp +++ b/src/mac/carbon/renderer.cpp @@ -57,6 +57,11 @@ public: wxOrientation orient, int flags = 0 ); + virtual void DrawCheckBox(wxWindow *win, + wxDC& dc, + const wxRect& rect, + int flags = 0); + virtual void DrawComboBoxDropButton(wxWindow *win, wxDC& dc, const wxRect& rect, @@ -459,6 +464,8 @@ wxRendererMac::DrawMacThemeButton(wxWindow *win, drawInfo.kind = kind; drawInfo.state = (flags & wxCONTROL_DISABLED) ? kThemeStateInactive : kThemeStateActive; drawInfo.value = (flags & wxCONTROL_SELECTED) ? kThemeButtonOn : kThemeButtonOff; + if (flags & wxCONTROL_UNDETERMINED) + drawInfo.value = kThemeButtonMixed; drawInfo.adornment = adornment; HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect ); @@ -471,6 +478,18 @@ wxRendererMac::DrawMacThemeButton(wxWindow *win, } } +void +wxRendererMac::DrawCheckBox(wxWindow *win, + wxDC& dc, + const wxRect& rect, + int flags) +{ + if (flags & wxCONTROL_CHECKED) + flags |= wxCONTROL_SELECTED; + + DrawMacThemeButton(win, dc, rect, flags, + kThemeCheckBox, kThemeAdornmentNone); +} void wxRendererMac::DrawComboBoxDropButton(wxWindow *win,