mirror of
https://github.com/reactos/wine.git
synced 2024-11-28 22:20:26 +00:00
comctl32/tab: Fix highlighted tabs painting.
This commit is contained in:
parent
4b2ea6f4e2
commit
4ebf2e4526
@ -1496,6 +1496,18 @@ TAB_EraseTabInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect
|
||||
FillRect(hdc, &rTemp, hbr);
|
||||
}
|
||||
|
||||
/* highlighting is drawn on top of previous fills */
|
||||
if (TAB_GetItem(infoPtr, iItem)->dwState & TCIS_HIGHLIGHTED)
|
||||
{
|
||||
if (deleteBrush)
|
||||
{
|
||||
DeleteObject(hbr);
|
||||
deleteBrush = FALSE;
|
||||
}
|
||||
hbr = GetSysColorBrush(COLOR_HIGHLIGHT);
|
||||
FillRect(hdc, &rTemp, hbr);
|
||||
}
|
||||
|
||||
/* Cleanup */
|
||||
if (deleteBrush) DeleteObject(hbr);
|
||||
}
|
||||
@ -1649,10 +1661,15 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect
|
||||
*/
|
||||
oldBkMode = SetBkMode(hdc, TRANSPARENT);
|
||||
if (!GetWindowTheme (infoPtr->hwnd) || (lStyle & TCS_BUTTONS))
|
||||
SetTextColor(hdc, (((lStyle & TCS_HOTTRACK) && (iItem == infoPtr->iHotTracked)
|
||||
&& !(lStyle & TCS_FLATBUTTONS))
|
||||
| (TAB_GetItem(infoPtr, iItem)->dwState & TCIS_HIGHLIGHTED)) ?
|
||||
comctl32_color.clrHighlight : comctl32_color.clrBtnText);
|
||||
{
|
||||
if ((lStyle & TCS_HOTTRACK) && (iItem == infoPtr->iHotTracked) &&
|
||||
!(lStyle & TCS_FLATBUTTONS))
|
||||
SetTextColor(hdc, comctl32_color.clrHighlight);
|
||||
else if (TAB_GetItem(infoPtr, iItem)->dwState & TCIS_HIGHLIGHTED)
|
||||
SetTextColor(hdc, comctl32_color.clrHighlightText);
|
||||
else
|
||||
SetTextColor(hdc, comctl32_color.clrBtnText);
|
||||
}
|
||||
|
||||
/*
|
||||
* if owner draw, tell the owner to draw
|
||||
@ -2698,6 +2715,8 @@ static inline LRESULT
|
||||
TAB_HighlightItem (TAB_INFO *infoPtr, INT iItem, BOOL fHighlight)
|
||||
{
|
||||
LPDWORD lpState;
|
||||
DWORD oldState;
|
||||
RECT r;
|
||||
|
||||
TRACE("(%p,%d,%s)\n", infoPtr, iItem, fHighlight ? "true" : "false");
|
||||
|
||||
@ -2705,12 +2724,16 @@ TAB_HighlightItem (TAB_INFO *infoPtr, INT iItem, BOOL fHighlight)
|
||||
return FALSE;
|
||||
|
||||
lpState = &TAB_GetItem(infoPtr, iItem)->dwState;
|
||||
oldState = *lpState;
|
||||
|
||||
if (fHighlight)
|
||||
*lpState |= TCIS_HIGHLIGHTED;
|
||||
else
|
||||
*lpState &= ~TCIS_HIGHLIGHTED;
|
||||
|
||||
if ((oldState != *lpState) && TAB_InternalGetItemRect (infoPtr, iItem, &r, NULL))
|
||||
InvalidateRect (infoPtr->hwnd, &r, TRUE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user