Commit c46a5141 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

comctl32/listview: Draw focus rectangle only when visible.

parent 88f7fd5d
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment