Nikolay Sivov : comctl32/listview: Draw focus rectangle only when visible.
Alexandre Julliard
julliard at winehq.org
Mon May 25 10:06:32 CDT 2009
Module: wine
Branch: master
Commit: c46a5141da0de48cb52c61a952d596a8736020b3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c46a5141da0de48cb52c61a952d596a8736020b3
Author: Nikolay Sivov <bunglehead at 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);
More information about the wine-cvs
mailing list