[COMCTL32]

- Draw shadow if item has focus but isn't selected

svn path=/trunk/; revision=55586
This commit is contained in:
Rafal Harabien 2012-02-14 00:58:59 +00:00
parent b5303c046f
commit 138580f9c6
2 changed files with 17 additions and 5 deletions

View file

@ -296,7 +296,19 @@ Index: listview.c
}
/* Listview invalidation functions: use _only_ these functions to invalidate */
@@ -5117,7 +5129,11 @@
@@ -4698,7 +4710,10 @@
if (infoPtr->uView == LV_VIEW_DETAILS && infoPtr->dwLvExStyle & LVS_EX_GRIDLINES)
rcLabel.bottom--;
- DrawTextW(hdc, lvItem.pszText, -1, &rcLabel, uFormat);
+ if ((!(lvItem.state & LVIS_SELECTED) || !infoPtr->bFocus) && (infoPtr->dwLvExStyle & LVS_EX_TRANSPARENTSHADOWTEXT))
+ DrawShadowText(hdc, lvItem.pszText, -1, &rcLabel, uFormat, RGB(255, 255, 255), RGB(0, 0, 0), 2, 2);
+ else
+ DrawTextW(hdc, lvItem.pszText, -1, &rcLabel, uFormat);
postpaint:
if (cdsubitemmode & CDRF_NOTIFYPOSTPAINT)
@@ -5117,7 +5132,11 @@
/* Draw marquee rectangle if appropriate */
if (infoPtr->bMarqueeSelect)
@ -308,7 +320,7 @@ Index: listview.c
if (cdmode & CDRF_NOTIFYPOSTPAINT)
notify_postpaint(infoPtr, &nmlvcd);
@@ -7927,6 +7943,7 @@
@@ -7927,6 +7946,7 @@
{
TRACE("(color=%x)\n", color);
@ -316,7 +328,7 @@ Index: listview.c
if(infoPtr->clrBk != color) {
if (infoPtr->clrBk != CLR_NONE) DeleteObject(infoPtr->hBkBrush);
infoPtr->clrBk = color;
@@ -9314,6 +9331,7 @@
@@ -9314,6 +9334,7 @@
infoPtr->clrText = CLR_DEFAULT;
infoPtr->clrTextBk = CLR_DEFAULT;
LISTVIEW_SetBkColor(infoPtr, comctl32_color.clrWindow);
@ -324,7 +336,7 @@ Index: listview.c
/* set default values */
infoPtr->nFocusedItem = -1;
@@ -11570,6 +11588,12 @@
@@ -11570,6 +11591,12 @@
case WM_SYSCOLORCHANGE:
COMCTL32_RefreshSysColors();

View file

@ -4710,7 +4710,7 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, INT nS
if (infoPtr->uView == LV_VIEW_DETAILS && infoPtr->dwLvExStyle & LVS_EX_GRIDLINES)
rcLabel.bottom--;
if (!lprcFocus && (infoPtr->dwLvExStyle & LVS_EX_TRANSPARENTSHADOWTEXT))
if ((!(lvItem.state & LVIS_SELECTED) || !infoPtr->bFocus) && (infoPtr->dwLvExStyle & LVS_EX_TRANSPARENTSHADOWTEXT))
DrawShadowText(hdc, lvItem.pszText, -1, &rcLabel, uFormat, RGB(255, 255, 255), RGB(0, 0, 0), 2, 2);
else
DrawTextW(hdc, lvItem.pszText, -1, &rcLabel, uFormat);