Mikołaj Zalewski : comctl32: header: Make all repaints pass through HEADER_Refresh.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Oct 16 05:28:45 CDT 2006


Module: wine
Branch: master
Commit: b182950bb94bf5e4e694e4aca72720b4e9777af6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b182950bb94bf5e4e694e4aca72720b4e9777af6

Author: Mikołaj Zalewski <mikolaj at zalewski.pl>
Date:   Sat Oct 14 20:23:35 2006 +0200

comctl32: header: Make all repaints pass through HEADER_Refresh.

---

 dlls/comctl32/header.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c
index 04bf978..5e5fca6 100644
--- a/dlls/comctl32/header.c
+++ b/dlls/comctl32/header.c
@@ -311,9 +311,6 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT
 
     TRACE("DrawItem(iItem %d bHotTrack %d unicode flag %d)\n", iItem, bHotTrack, (infoPtr->nNotifyFormat == NFR_UNICODE));
 
-    if (!infoPtr->bRectsValid)
-    	HEADER_SetItemBounds(hwnd);
-
     r = phdi->rect;
     if (r.right - r.left == 0)
 	return phdi->rect.right;
@@ -557,12 +554,12 @@ HEADER_Refresh (HWND hwnd, HDC hdc)
     for (i = 0; x <= rect.right && i < infoPtr->uNumItem; i++) {
         int idx = HEADER_OrderToIndex(hwnd,i);
         if (RectVisible(hdc, &infoPtr->items[idx].rect))
-            HEADER_DrawItem (hwnd, hdc, idx, infoPtr->iHotItem == i);
+            HEADER_DrawItem(hwnd, hdc, idx, infoPtr->iHotItem == idx);
         x = infoPtr->items[idx].rect.right;
     }
 
-    if ((x <= rect.right) && (infoPtr->uNumItem > 0)) {
-        rect.left = x;
+    rect.left = x;
+    if ((x <= rect.right) && RectVisible(hdc, &rect) && (infoPtr->uNumItem > 0)) {
         if (theme != NULL) {
             DrawThemeBackground (theme, hdc, HP_HEADERITEM, HIS_NORMAL, &rect,
                 NULL);
@@ -588,12 +585,11 @@ static void
 HEADER_RefreshItem (HWND hwnd, HDC hdc, INT iItem)
 {
     HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
-    HFONT hFont, hOldFont;
 
-    hFont = infoPtr->hFont ? infoPtr->hFont : GetStockObject (SYSTEM_FONT);
-    hOldFont = SelectObject (hdc, hFont);
-    HEADER_DrawItem (hwnd, hdc, iItem, infoPtr->iHotItem == iItem);
-    SelectObject (hdc, hOldFont);
+    if (!infoPtr->bRectsValid)
+        HEADER_SetItemBounds(hwnd);
+
+    InvalidateRect(hwnd, &infoPtr->items[iItem].rect, FALSE);
 }
 
 
@@ -972,6 +968,10 @@ HEADER_CreateDragImage (HWND hwnd, WPARA
     
     if (wParam < 0 || wParam >= infoPtr->uNumItem)
         return FALSE;
+
+    if (!infoPtr->bRectsValid)
+    	HEADER_SetItemBounds(hwnd);
+
     lpItem = &infoPtr->items[wParam];
     width = lpItem->rect.right - lpItem->rect.left;
     height = lpItem->rect.bottom - lpItem->rect.top;




More information about the wine-cvs mailing list