Module: wine Branch: master Commit: c46a5141da0de48cb52c61a952d596a8736020b3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c46a5141da0de48cb52c61a952...
Author: Nikolay Sivov bunglehead@gmail.com Date: Sun May 24 22:36:14 2009 +0400
comctl32/listview: Draw focus rectangle only when visible.
---
dlls/comctl32/listview.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c index 8ddaf3d..75ce291 100644 --- a/dlls/comctl32/listview.c +++ b/dlls/comctl32/listview.c @@ -4305,6 +4305,7 @@ static void LISTVIEW_Refresh(LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *prcEra ITERATOR i; HDC hdcOrig = hdc; HBITMAP hbmp = NULL; + RANGE range;
LISTVIEW_DUMP(infoPtr);
@@ -4370,11 +4371,11 @@ static void LISTVIEW_Refresh(LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *prcEra
/* figure out what we need to draw */ iterator_visibleitems(&i, infoPtr, hdc); - + range = iterator_range(&i); + /* send cache hint notification */ if (infoPtr->dwStyle & LVS_OWNERDATA) { - RANGE range = iterator_range(&i); NMLVCACHEHINT nmlv; ZeroMemory(&nmlv, sizeof(NMLVCACHEHINT)); @@ -4392,8 +4393,9 @@ static void LISTVIEW_Refresh(LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *prcEra else /* LVS_LIST, LVS_ICON or LVS_SMALLICON */ LISTVIEW_RefreshList(infoPtr, &i, hdc, cdmode);
- /* if we have a focus rect, draw it */ - if (infoPtr->bFocus) + /* if we have a focus rect and it's visible, draw it */ + if (infoPtr->bFocus && range.lower <= infoPtr->nFocusedItem && + (range.upper - 1) >= infoPtr->nFocusedItem) LISTVIEW_DrawFocusRect(infoPtr, hdc); } iterator_destroy(&i);