From 0fa33cad49a6a79791eb8ebee528dae76491f337 Mon Sep 17 00:00:00 2001 From: Jon Griffiths Date: Thu, 7 Oct 2004 17:34:31 +0000 Subject: [PATCH] Draw +/- correctly for large icon sizes. --- dlls/comctl32/treeview.c | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c index 997a7325c9a..37d100df9f9 100644 --- a/dlls/comctl32/treeview.c +++ b/dlls/comctl32/treeview.c @@ -2319,20 +2319,8 @@ TREEVIEW_DrawItemLines(TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *item) HBRUSH hbr = CreateSolidBrush(infoPtr->clrBk); HBRUSH hbrOld = SelectObject(hdc, hbr); - /* FIXME: Native actually draws: - * - * xxx - * X x - * xxx xxx xxxxxxx - * x x or x x - * xxx xxx xxxxxxx - * x x - * xxx - * - * This looks a lot better when the icon size is increased. - */ - Rectangle(hdc, centerx - rectsize - 1, centery - rectsize - 1, - centerx + rectsize + 2, centery + rectsize + 2); + Rectangle(hdc, centerx - rectsize - 1, centery - rectsize - 1, + centerx + rectsize + 2, centery + rectsize + 2); SelectObject(hdc, hbrOld); DeleteObject(hbr); @@ -2340,13 +2328,29 @@ TREEVIEW_DrawItemLines(TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *item) SelectObject(hdc, hOldPen); DeleteObject(hNewPen); - MoveToEx(hdc, centerx - plussize + 1, centery, NULL); - LineTo(hdc, centerx + plussize, centery); + if (height < 16 || width < 16) + { + MoveToEx(hdc, centerx - plussize + 1, centery, NULL); + LineTo(hdc, centerx + plussize, centery); - if (!(item->state & TVIS_EXPANDED)) + if (!(item->state & TVIS_EXPANDED)) + { + MoveToEx(hdc, centerx, centery - plussize + 1, NULL); + LineTo(hdc, centerx, centery + plussize); + } + } + else { - MoveToEx(hdc, centerx, centery - plussize + 1, NULL); - LineTo(hdc, centerx, centery + plussize); + Rectangle(hdc, centerx - plussize + 1, centery - 1, + centerx + plussize, centery + 2); + + if (!(item->state & TVIS_EXPANDED)) + { + Rectangle(hdc, centerx - 1, centery - plussize + 1, + centerx + 2, centery + plussize); + SetPixel(hdc, centerx - 1, centery, infoPtr->clrBk); + SetPixel(hdc, centerx + 1, centery, infoPtr->clrBk); + } } } } -- 2.11.4.GIT