[5/6] comctl32/treeview: Use cached colors instead of GetSysColor in TreeView

Nikolay Sivov bunglehead at gmail.com
Sun May 17 15:12:40 CDT 2009


Changelog:
    - Use cached colors instead of GetSysColor in TreeView

>From dfd439ab2f1bc68b049fdd6f6d8bc18243ac1666 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Sun, 17 May 2009 23:08:44 +0400
Subject: Use cached colors instead of GetSysColor in TreeView

---
 dlls/comctl32/treeview.c |   24 +++++++++++++-----------
 1 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c
index 4aa5725..d01a127 100644
--- a/dlls/comctl32/treeview.c
+++ b/dlls/comctl32/treeview.c
@@ -2306,7 +2306,7 @@ TREEVIEW_DrawItemLines(const TREEVIEW_INFO *infoPtr, HDC hdc, const TREEVIEW_ITE
 		 & (TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS))
 		> TVS_LINESATROOT);
     HBRUSH hbr, hbrOld;
-    COLORREF clrBk = infoPtr->clrBk == -1 ? GetSysColor(COLOR_WINDOW):
+    COLORREF clrBk = infoPtr->clrBk == -1 ? comctl32_color.clrWindow:
                                             infoPtr->clrBk;
 
     if (!lar && item->iLevel == 0)
@@ -2460,26 +2460,26 @@ TREEVIEW_DrawItem(const TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *wineItem
     {
 	if ((wineItem->state & TVIS_DROPHILITED) || inFocus)
 	{
-	    nmcdhdr.clrTextBk = GetSysColor(COLOR_HIGHLIGHT);
-	    nmcdhdr.clrText   = GetSysColor(COLOR_HIGHLIGHTTEXT);
+	    nmcdhdr.clrTextBk = comctl32_color.clrHighlight;
+	    nmcdhdr.clrText   = comctl32_color.clrHighlightText;
 	}
 	else
 	{
-	    nmcdhdr.clrTextBk = GetSysColor(COLOR_BTNFACE);
+	    nmcdhdr.clrTextBk = comctl32_color.clrBtnFace;
 	    if (infoPtr->clrText == -1)
-		nmcdhdr.clrText = GetSysColor(COLOR_WINDOWTEXT);
+		nmcdhdr.clrText = comctl32_color.clrWindowText;
 	    else
 		nmcdhdr.clrText = infoPtr->clrText;
 	}
     }
     else
     {
-	nmcdhdr.clrTextBk = infoPtr->clrBk == -1 ? GetSysColor(COLOR_WINDOW):
+	nmcdhdr.clrTextBk = infoPtr->clrBk == -1 ? comctl32_color.clrWindow:
                                                    infoPtr->clrBk;
 	if ((infoPtr->dwStyle & TVS_TRACKSELECT) && (wineItem == infoPtr->hotItem))
 	    nmcdhdr.clrText = comctl32_color.clrHighlight;
 	else if (infoPtr->clrText == -1)
-	    nmcdhdr.clrText = GetSysColor(COLOR_WINDOWTEXT);
+	    nmcdhdr.clrText = comctl32_color.clrWindowText;
 	else
 	    nmcdhdr.clrText = infoPtr->clrText;
     }
@@ -2786,7 +2786,7 @@ static LRESULT
 TREEVIEW_EraseBackground(const TREEVIEW_INFO *infoPtr, HDC hDC)
 {
     HBRUSH hBrush;
-    COLORREF clrBk = infoPtr->clrBk == -1 ? GetSysColor(COLOR_WINDOW):
+    COLORREF clrBk = infoPtr->clrBk == -1 ? comctl32_color.clrWindow:
                                             infoPtr->clrBk;
     RECT rect;
 
@@ -4885,7 +4885,7 @@ initialize_checkboxes(TREEVIEW_INFO *infoPtr)
 
     SelectObject(hdc, hbmOld);
     nIndex = ImageList_AddMasked(infoPtr->himlState, hbm,
-                                 GetSysColor(COLOR_WINDOW));
+                                 comctl32_color.clrWindow);
     TRACE("checkbox index %d\n", nIndex);
 
     DeleteObject(hbm);
@@ -4949,7 +4949,7 @@ TREEVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
     infoPtr->clrBk   = -1; /* use system color */
     infoPtr->clrText = -1;	/* use system color */
     infoPtr->clrLine = RGB(128, 128, 128);
-    infoPtr->clrInsertMark = GetSysColor(COLOR_BTNTEXT);
+    infoPtr->clrInsertMark = comctl32_color.clrBtnText;
 
     /* hwndToolTip */
 
@@ -5705,7 +5705,9 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
     case WM_STYLECHANGED:
 	return TREEVIEW_StyleChanged(infoPtr, wParam, lParam);
 
-	/* WM_SYSCOLORCHANGE */
+    case WM_SYSCOLORCHANGE:
+        COMCTL32_RefreshSysColors();
+        return 0;
 
 	/* WM_SYSKEYDOWN */
 
-- 
1.5.6.5







More information about the wine-patches mailing list