diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index f369504ada..e0c1fd6a6e 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -1152,9 +1152,7 @@ bool wxDataViewToggleRenderer::WXActivateCell(const wxRect& WXUNUSED(cellRect), wxSize wxDataViewToggleRenderer::GetSize() const { - // the window parameter is not used by GetCheckBoxSize() so it's - // safe to pass NULL - return wxRendererNative::Get().GetCheckBoxSize(NULL); + return wxRendererNative::Get().GetCheckBoxSize(GetView()); } // --------------------------------------------------------- diff --git a/src/generic/renderg.cpp b/src/generic/renderg.cpp index d42a5e654b..2d5de98030 100644 --- a/src/generic/renderg.cpp +++ b/src/generic/renderg.cpp @@ -712,9 +712,9 @@ wxRendererGeneric::DrawCheckBox(wxWindow *WXUNUSED(win), } } -wxSize wxRendererGeneric::GetCheckBoxSize(wxWindow *WXUNUSED(win)) +wxSize wxRendererGeneric::GetCheckBoxSize(wxWindow *win) { - return wxSize(16, 16); + return win->FromDIP(wxSize(16, 16)); } void diff --git a/src/msw/renderer.cpp b/src/msw/renderer.cpp index 01054e7007..080b5a141d 100644 --- a/src/msw/renderer.cpp +++ b/src/msw/renderer.cpp @@ -327,6 +327,8 @@ public: wxTitleBarButton button, int flags = 0); + virtual wxSize GetCheckBoxSize(wxWindow *win); + virtual void DrawGauge(wxWindow* win, wxDC& dc, const wxRect& rect, @@ -902,6 +904,21 @@ wxRendererXP::DrawTitleBarBitmap(wxWindow *win, DoDrawButtonLike(hTheme, part, dc, rect, flags); } +wxSize wxRendererXP::GetCheckBoxSize(wxWindow* win) +{ + wxUxThemeHandle hTheme(win, L"BUTTON"); + wxUxThemeEngine* const te = wxUxThemeEngine::Get(); + + if (te->IsThemePartDefined(hTheme, BP_CHECKBOX, 0)) + { + SIZE checkSize; + te->GetThemePartSize(hTheme, NULL, BP_CHECKBOX, CBS_UNCHECKEDNORMAL, NULL, TS_DRAW, &checkSize); + return wxSize(checkSize.cx, checkSize.cy); + } + else + return m_rendererNative.GetCheckBoxSize(win); +} + void wxRendererXP::DrawCollapseButton(wxWindow *win, wxDC& dc,