Improve drawing of the tree item buttons in the generic renderer.

Draw the "-" and "+" signs always properly centered.

Closes #15526.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74887 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2013-09-30 23:49:15 +00:00
parent 866a7cd7ca
commit bddab017c6

View File

@ -467,12 +467,20 @@ wxRendererGeneric::DrawTreeItemButton(wxWindow * WXUNUSED(win),
dc.DrawRectangle(rect); dc.DrawRectangle(rect);
// Make sure that the sign is properly centered by always using an
// odd-sized rectangle for it.
wxRect signRect(rect);
if ( !(signRect.x % 2) )
signRect.x--;
if ( !(signRect.y % 2) )
signRect.y--;
// black lines // black lines
const wxCoord xMiddle = rect.x + rect.width/2; const wxCoord xMiddle = signRect.x + signRect.width/2;
const wxCoord yMiddle = rect.y + rect.height/2; const wxCoord yMiddle = signRect.y + signRect.height/2;
// half of the length of the horz lines in "-" and "+" // half of the length of the horz lines in "-" and "+"
const wxCoord halfWidth = rect.width/2 - 2; const wxCoord halfWidth = signRect.width/2 - 2;
dc.SetPen(*wxBLACK_PEN); dc.SetPen(*wxBLACK_PEN);
dc.DrawLine(xMiddle - halfWidth, yMiddle, dc.DrawLine(xMiddle - halfWidth, yMiddle,
xMiddle + halfWidth + 1, yMiddle); xMiddle + halfWidth + 1, yMiddle);
@ -480,7 +488,7 @@ wxRendererGeneric::DrawTreeItemButton(wxWindow * WXUNUSED(win),
if ( !(flags & wxCONTROL_EXPANDED) ) if ( !(flags & wxCONTROL_EXPANDED) )
{ {
// turn "-" into "+" // turn "-" into "+"
const wxCoord halfHeight = rect.height/2 - 2; const wxCoord halfHeight = signRect.height/2 - 2;
dc.DrawLine(xMiddle, yMiddle - halfHeight, dc.DrawLine(xMiddle, yMiddle - halfHeight,
xMiddle, yMiddle + halfHeight + 1); xMiddle, yMiddle + halfHeight + 1);
} }